将取消预览结果导入到新表并在键上匹配



我目前有几个unpivot查询,每个查询生成大约2000行。我需要接受这些问题的结果,并在一个新的表上匹配一个关键。

查询示例:

Select DeviceSlot
FROM tbl1
unpivot(
DeviceSlot
For col in(
col1,
col2,
col3,
)
)AS Unpivot

现在,我需要匹配查询的结果,并将其插入到一个约有20000行的新表中。伪代码:

Insert Into tbl2(DeviceSlot)
Select DeviceSlot
FROM tbl1
unpivot(
DeviceSlot
For col in(
col1,
col2,
col3
)
)AS Unpivot2
Where tbl1.key = tbl2.key

我一直很困惑该怎么做,如果不清楚,我道歉。我还有另一个对不同列执行相同操作的unpivot查询。

不确定你想要什么。当取消透视以"规范化"数据时,通常在取消透视过程中派生出所需的"键",例如,在未透视的数据中重复原始表的id列下方,以表示某个新表的外键。

SQL Fiddle

MS SQL Server 2014架构设置:

CREATE TABLE Table1
([id] int, [col1] varchar(2), [col2] varchar(2), [col3] varchar(2))
;
INSERT INTO Table1
([id], [col1], [col2], [col3])
VALUES
(1, 'a', 'b', 'c'),
(2, 'aa', 'bb', 'cc')
;

查询1

select id as table1_fk, colheading, colvalue
from (
select * from table1
) t
unpivot (
colvalue for colheading in (col1, col2, col3) 
) u

结果

| table1_fk | colheading | colvalue |
|-----------|------------|----------|
|         1 |       col1 |        a |
|         1 |       col2 |        b |
|         1 |       col3 |        c |
|         2 |       col1 |       aa |
|         2 |       col2 |       bb |
|         2 |       col3 |       cc |

最新更新