在select语句查询时重命名列名解决方案
在select语句查询时重命名列名
目标 是创建临时表,通过以下方法 :
但是在执行时提示错误,说是有重复列,原来table1 table2中都有名为ID的列,我现在想在select查询时修改列名,不让有重复,不知道怎么做,请高手支招。。。
------解决思路----------------------
你手动写出列名,不要用*
还有提醒你一下,EXEC执行完之后,临时表你就访问不到了
------解决思路----------------------
你也可以用这种类似方法动态生成列名
------解决思路----------------------
------解决思路----------------------
exec sp_executesql 'select a.*,b.* into #tb from table1 a ,table2 b'
------解决思路----------------------
如要有重复的列名称,你必须把列名称一个一个的写全了,相当名称的 那些列,必须将其中一个重命名。
但是要提醒你一下:
1.sp_executesql 后的这个动态SQL ,你要用这样的形式 N'select* into #t from mytable'
2.这样的临时表,你访问不到,同 2# 的提示。
目标 是创建临时表,通过以下方法 :
exec sp_executesql 'select * into #tb from table1,table2'
但是在执行时提示错误,说是有重复列,原来table1 table2中都有名为ID的列,我现在想在select查询时修改列名,不让有重复,不知道怎么做,请高手支招。。。
------解决思路----------------------
你手动写出列名,不要用*
还有提醒你一下,EXEC执行完之后,临时表你就访问不到了
------解决思路----------------------
你也可以用这种类似方法动态生成列名
DECLARE @s NVARCHAR(4000)
SET @s = ''
SELECT @s = @s + ',' + 'isnull('+QUOTENAME(name)+','''')'
FROM syscolumns
WHERE id = OBJECT_ID('表名')
--AND name NOT IN ( '不希望显式的列' )
SET @s = STUFF(@s, 1, 1, '')
EXEC('select '+@s+' from 表名 ')
------解决思路----------------------
DECLARE @s NVARCHAR(4000)
SET @s = ''
SELECT @s = @s + ',' + 'isnull('+QUOTENAME(name)+','''')'
FROM syscolumns
WHERE id = OBJECT_ID('表名')
--AND name NOT IN ( '不希望显式的列' )
--以上从系统表 syscolumns 查找你的表的字段,可在这里面过滤你不需要的字段名
SET @s = STUFF(@s, 1, 1, '')
EXEC('select '+@s+' from 表名 ')
--动态执行,详细的可以BAIDU下
------解决思路----------------------
exec sp_executesql 'select a.*,b.* into #tb from table1 a ,table2 b'
------解决思路----------------------
如要有重复的列名称,你必须把列名称一个一个的写全了,相当名称的 那些列,必须将其中一个重命名。
但是要提醒你一下:
1.sp_executesql 后的这个动态SQL ,你要用这样的形式 N'select* into #t from mytable'
2.这样的临时表,你访问不到,同 2# 的提示。