我目前有几个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 |