用于将列转换为行的SQL查询

Hap*_*ppy 1 sql t-sql sql-server

我有一个表如下所示.我的问题是:如何将列转换为行?我正在使用Microsoft SQL Server

   sip_RECno  user1     user2    user3     user4       

   1          ram       ravi     sam       raj
Run Code Online (Sandbox Code Playgroud)

我需要像下面这样的操作

 user
 ram
 ravi
 sam
 raj
Run Code Online (Sandbox Code Playgroud)

怎么做?谢谢

M.A*_*Ali 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')
Run Code Online (Sandbox Code Playgroud)

询问

;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
Run Code Online (Sandbox Code Playgroud)

结果集

?????????
? Users ?
?????????
? ram   ?
? ravi  ?
? sam   ?
? raj   ?
?????????
Run Code Online (Sandbox Code Playgroud)


Kir*_*sev 5

你可以简单 UNPIVOT()

select [user] from table_name unpivot 
      (
       [user]
       for [userid] in ([user1], [user2], [user3], [user4]) 
      )unpvt
Run Code Online (Sandbox Code Playgroud)

演示