我有三张桌子 表1:
员工 | 名称 |
---|
表2:
A 栏 | B 栏 |
---|---|
拉维 | 开发商 |
斯瓦蒂 | 人力资源 |
表3:
来源专栏 | 目的地栏 |
---|---|
员工 | A 栏 |
名称 | B 栏 |
要插入表 1 中的预期输出:
员工 | 名称 |
---|---|
拉维 | 开发商 |
斯瓦蒂 | 人力资源 |
我必须通过动态匹配表 3 中提到的列来在表 1 中插入表 2 的值。
Table2 列和值会动态变化。只有使用Table3我才能插入Table1。所以我就想到了这一点。 谁能帮我解决这个问题吗?
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