Microsoft SQL 服务器 PIVOT/UNPIVOT 问题

Microsoft SQL Server PIVOT/UNPIVOT questions

我有以下片段:

CREATE TABLE [SINGLE_COL]
(
    [COL1] [varchar](50) NULL,
    [COL2] [varchar](50) NULL,
    [COL3] [varchar](50) NULL
)
GO

INSERT INTO [SINGLE_COL]
VALUES ('A', 'B', 'C')
GO
INSERT INTO [SINGLE_COL]
VALUES ('D', 'E', 'F')
GO

select * from [SINGLE_COL]

它returns像这样:

COL1 COL2 COL3
A    B    C
D    E    F

我想将所有行变成单列,如下所示:

COL
A
B
C
D
E
F

这是我在 oracle 中所做的:

SELECT col FROM SINGLE_COL
UNPIVOT (col FOR col1 IN (col1, col2, col3));

在 Oracle 中非常简单易行,但在 MS SQL Server 中则不然!

我认为我必须使用函数 UNPIVOT,但是如何使用呢??

谢谢!

你可以这样做:

select Cols from [SINGLE_COL]
unpivot
(
  Cols
  for col in (Col1, Col2, Col3)
) u;