Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL中的映射列名_Sql Server_Sql Server 2008 - Fatal编程技术网

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中处理的。