如何在 SQL 中将行值与列名称连接

问题描述 投票:0回答:1

我有三张桌子 表1:

员工 名称

表2:

A 栏 B 栏
拉维 开发商
斯瓦蒂 人力资源

表3:

来源专栏 目的地栏
员工 A 栏
名称 B 栏

要插入表 1 中的预期输出:

员工 名称
拉维 开发商
斯瓦蒂 人力资源

我必须通过动态匹配表 3 中提到的列来在表 1 中插入表 2 的值。

Table2 列和值会动态变化。只有使用Table3我才能插入Table1。所以我就想到了这一点。 谁能帮我解决这个问题吗?

sql sql-server sql-server-2012
1个回答
0
投票
DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX),
      @vals  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ',' + QUOTENAME(Sourcecolumn) 
                    from Table3
                    order by Destinationcolumn
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

select @cols  
  
select @vals = STUFF((SELECT ',' + '(''' + ColumnA + ''',''' + ColumnB + ''')'
                    from Table2
                    order by ColumnA
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')  

  
select @vals


set @query = 'INSERT INTO Table1 (' + @cols +') VALUES ' + @vals;

execute(@query)

SELECT * FROM Table1

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.