Sql server SQL中的映射列名
我有一个输入表Sql server SQL中的映射列名,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个输入表 Header DisplayName Field1 EmpName Field2 EmpID Field3 IsActive Filed4 Dept 和一个输出表: Field1 Field2 Field3 Filed4 A 1 + Q B 2 + R 如何将输入表中的显示名称映射到输出表,而不显式指定“选择字段1为'EmpName',选择字段2
Header DisplayName
Field1 EmpName
Field2 EmpID
Field3 IsActive
Filed4 Dept
和一个输出表:
Field1 Field2 Field3 Filed4
A 1 + Q
B 2 + R
如何将输入表中的显示名称映射到输出表,而不显式指定“选择字段1为'EmpName',选择字段2为'EmpID'”等等
是否有一种奇特的方式映射输出表,使每个字段从输入表中选择显示名称
TIA不确定您的情况,但我会首先尝试处理您的输出表视图。但是,如果现在可以这样做,您可以使用动态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'
我不明白这个问题。“输入”表是描述“输出”表的元表吗?您是否正在尝试根据“输入”表的内容编写动态sql,以便从“输出”表中进行选择?我觉得您是在编术语,而不是定义“输入表”、“输出表”、“映射”和“显示名称”。你能重写一下,准确地解释一下你想要完成什么吗。这感觉像是一种反模式(数据库中的数据库反模式),不确定输出表中的值来自何处,但这是一个枢轴。您可以使用动态sql,但通常情况下,这并不是最好在db中处理的。