SQL Server:如何在不创建新功能的情况下将单列拆分为多行?

时间:2014-05-21 09:19:59

标签: sql-server

我想找到一种将列拆分为行的方法,但我可以找到许多解决方案都使用函数。

我很好奇我们可以在没有功能的情况下这样做吗?

以下是我的示例数据:

      id
value a, b, c, d, e

这是一个名为id的COLUMN,其值为' a,b,c,d,e'

我想让它们像

row 1 a
row 2 b
row 3 c
row 4 d
row 5 e

1 个答案:

答案 0 :(得分:0)

使用UNPIVOT

示例:

DECLARE @PIVOTED TABLE
(   KEYVAL VARCHAR(50)
,   A INT
,   B INT
,   C INT
,   D INT
,   E INT)

INSERT INTO @PIVOTED 
( KEYVAL, A, B, C, D, E )
VALUES  
('Test 1', 1, 7, 6, 4, 3),('Test 2', 9, 3, 5, 4, 6)

SELECT
    KEYVAL
,   ABCKeys
,   ABCVals
FROM 
(   SELECT *
    FROM @PIVOTED
) p UNPIVOT
( ABCVals FOR ABCKeys IN ( A, B, C, D, E ) 
) AS unpvt
ORDER BY KEYVAL;