表值作为表头

时间:2010-06-22 14:37:00

标签: sql-server pivot pivot-table

查询:

select Escuser,Eslevel from WF_UserConfiguration  

将表格退回给我:

╔═════════════════════╗
║ Escuser     Eslevel ║
╠═════════════════════╣
║ A000        1       ║
║ A010        4       ║
║ A021        3       ║
║ ABCD        1       ║
║ C067        3       ║
║ C099        1       ║
║ C252        2       ║
╚═════════════════════╝

我的问题是我想得到以下输出

╔═════════════════════════════╗
║       1     2      3     4  ║
╠═════════════════════════════╣
║     A000  C252   A021  A010 ║
║     ABCD         C067       ║
║     C099                    ║
╚═════════════════════════════╝

表格标题1234是第一个查询结果的EsLevel值。

我应该如何获得以下结果(我的意思是什么查询)?

1 个答案:

答案 0 :(得分:0)

使用pivot的答案: 的 See live demo

select 
[1],
[2],
[3],
[4] 
from
(
select 
  Escuser,
  Eslevel, 
  Row_number() over(partition by Eslevel order by escuser asc)  as r
from WF_UserConfiguration  
)src
pivot
( 
  max(escuser) 
  for Eslevel in 
   (
    [1],[2],[3],[4]
   )
)p