有下表:
| Some Table |
| Id | Name | Age |
| 23 | Marc | 41 |
| 54 | Edu | 34 |
我想得到:
|Another Table's Column| Id | Name | Age |
| ..... | Id@23 | Name@Marc | Age@41 |
| ..... | Id@54 | Name@Edu | Age@34 |
此查询将在动态sql中使用,表的名称将作为参数传递。
最终查询必须显示至少两个表的数据,并且其中只有一个必须以列名作为前缀显示数据。
答案 0 :(得分:0)
不确定我理解你想要什么,但是这里是在任何传递的表的结果中显示列名的脚本:
DECLARE @t NVARCHAR(128) = '[Person].[Person]';
DECLARE @l NVARCHAR(2000) = '';
DECLARE @s NVARCHAR(4000) = '';
SELECT @l = (
SELECT ' ''@' + Name + ''' + CAST([' + Name + '] as VARCHAR(max)) as [' + Name + '],'
FROM sys.columns
WHERE object_id = OBJECT_ID(@t)
ORDER BY column_id
FOR XML PATH(''));
SELECT @s = 'SELECT ' + LEFT(@l,LEN(@l)-1) + ' FROM ' + @t + ';'
PRINT @s
EXEC (@s)
您可以将其调整为链接另一个表或多个表