我有一个输入表
Header DisplayName
Field1 EmpName
Field2 EmpID
Field3 IsActive
Filed4 Dept
还有一个输出表:
Field1 Field2 Field3 Filed4
A 1 + Q
B 2 + R
如何在不显式指定“选择字段1 AS'EmpName',字段2 AS'EmpID'”等的情况下将输入表中的显示名称映射到输出表?
是否有一种通过每个字段从输入表中选择显示名称的方式映射输出表的好方法?
TIA
答案 0 :(得分:2)
不确定您的情况,但是我首先会尝试使用输出表的视图进行处理。但是,如果现在可以,则可以使用动态SQL:
DECLARE @Sql NVARCHAR(MAX) = 'SELECT '
+ STUFF((
SELECT ', [' + Header + '] AS [' + DisplayName + ']' AS [text()]
FROM tblInput FOR XML PATH('')), 1, 2, '')
+ ' FROM tblOutput'
EXEC sys.sp_executesql @Sql
如果需要,它将支持注入SQL的变量。
DECLARE @Sql NVARCHAR(MAX) = 'SELECT '
+ STUFF((
SELECT ', [' + Header + '] AS [' + DisplayName + ']' AS [text()]
FROM tblInput FOR XML PATH('')), 1, 2, '')
+ ' FROM tblOutput O WHERE Field1 = @Field1'
EXEC sys.sp_executesql @Sql, N'@Field1 VARCHAR(50)', @Field1 = 'A'