选择插入,如不旋转和旋转

时间:2019-04-29 02:54:17

标签: sql-server

表1:

kode  | 101  | 102 | 103   | 104
=================================
1234  | 100  | 200 | 300   | 400
4555  | 1200 | 130 | 14500 | 1550
5012  | 100  | 150 | 350   | 440

表2:

kode  | field1 | field2
=======================
1234  | 101    | 100
1234  | 102    | 200
1234  | 103    | 300
1234  | 104    | 400
4555  | 101    | 1200
4555  | 102    | 130
4555  | 103    | 14500
4555  | 104    | 1550
5012  | 101    | 100
5012  | 102    | 150
5012  | 103    | 350
5012  | 104    | 440

我在table-1中有数据,如何将数据从table-1插入到table-2 与使用像unpivot这样的sql查询来通过使用set @cols来旋转哪个动态

1 个答案:

答案 0 :(得分:1)

您可以使用UNPIVOT创建所需的数据集。假设您的表格如下所示:

create table table1 (
    kode int,
    [101] int,
    [102] int,
    [103] int,
    [104] int
);

insert into table1 values
(1234  , 100  , 200 , 300   , 400),
(4555  , 1200 , 130 , 14500 , 1550),
(5012  , 100  , 150 , 350   , 440);

您的查询将如下所示

SELECT kode, field1, field2
FROM table1
UNPIVOT 
(
  field2 FOR field1 IN ([101], [102], [103], [104])
) AS up;

那将给您想要的结果。

让我们以这种方式创建一个新表

create table table2 (
    kode int,
    field1 int,
    field2 int
);

将UNPIVOT的数据填充到表2

insert into table2
SELECT kode, field1, field2
FROM table1
UNPIVOT 
(
  field2 FOR field1 IN ([101], [102], [103], [104])
) AS up;

select * from table2;

示例:https://rextester.com/YPWG93602