导入Unpivot结果到新表并匹配Key

时间:2017-11-18 23:20:11

标签: sql ssms sql-insert unpivot

我目前有一些不透明的查询,每个查询大约2000行。我需要获取这些queires的结果,然后放入一个新表来匹配一个键。

查询示例:

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

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

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

我对如何做到这一点感到非常困惑,如果不清楚我会道歉。 我还有另一个unpivot查询为不同的列做同样的事情。

1 个答案:

答案 0 :(得分:0)

不确定你要求的是什么。虽然未正确地“标准化”数据,但通常在未翻转期间导出所需的“密钥”,例如,在未旋转的数据中重复原始表的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

<强> Results

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