重新排列一个sql表

时间:2017-11-27 10:55:05

标签: sql sql-server

我有下表

1      a      10
1      b      11
2      a      4
2      b      8
3      a      5
3      b      4

我想将表格重新排列为以下表格

1    10     11
2    4      8
3    5      4

第二列的名称为“a”,第三列的名称为“b”。 这可能吗? 我正在迈出SQL的第一步。感谢您的支持。

2 个答案:

答案 0 :(得分:1)

我假设如下:表名为MyTable,其中包含以下列:IDCol2Col3

select ID,
       max(case when Col2 = 'a' then Col3 end) AS A,
       max(case when Col2 = 'b' then Col3 end) AS B
from MyTable
group by ID

答案 1 :(得分:0)

尝试简单的方法:

DECLARE @TABLE TABLE(ID INT, NAME VARCHAR(1), VALUE INT)
INSERT INTO @TABLE VALUES(1,'a',10)
INSERT INTO @TABLE VALUES(1,'b',11)
INSERT INTO @TABLE VALUES(2,'a',4)
INSERT INTO @TABLE VALUES(2,'b',8)
INSERT INTO @TABLE VALUES(3,'a',5)
INSERT INTO @TABLE VALUES(3,'b',4)

SELECT ID
    ,MAX(CASE WHEN NAME='a' THEN VALUE END) Value1
    ,MAX(CASE WHEN NAME='b' THEN VALUE END) Value2
FROM @TABLE
GROUP BY ID

<强>输出:

ID  Value1  Value2
1     10      11
2     4       8
3     5       4