我有一个如下所示的表。我的问题是:如何将列转换为行?我正在使用Microsoft SQL Server
sip_RECno user1 user2 user3 user4
1 ram ravi sam raj
我需要像下面这样的操作
user
ram
ravi
sam
raj
怎么做?谢谢
答案 0 :(得分:8)
您的数据
DECLARE @TABLE TABLE
(sip_RECno INT,user1 VARCHAR(10),user2 VARCHAR(10)
,user3 VARCHAR(10),user4 VARCHAR(10))
INSERT INTO @TABLE VALUES
(1,'ram','ravi','sam','raj')
<强>查询强>
;WITH CTE
AS
(
SELECT * FROM (
SELECT user1 ,user2 ,user3 , user4 FROM @TABLE) T
UNPIVOT ( Value FOR N IN (user1 ,user2 ,user3 , user4))P
)
SELECT Value AS Users
FROM CTE
结果集
╔═══════╗
║ Users ║
╠═══════╣
║ ram ║
║ ravi ║
║ sam ║
║ raj ║
╚═══════╝
答案 1 :(得分:5)
您可以简单地UNPIVOT()
select [user] from table_name unpivot
(
[user]
for [userid] in ([user1], [user2], [user3], [user4])
)unpvt