2011-09-23 53 views
0

的种类我有这样显示行数并排,枢轴

Column1 | Column2 
------------------- 
A  | 1 
A  | 2 
A  | 3 
B  | 4 
B  | 5 
B  | 3 
C  | 2 
C  | 2 
C  | 2 
D  | 7 
D  | 8 
D  | 9 

表欲输出作为

A | B | C | D 
-------------------- 
1 | 4 | 2 | 7 
2 | 5 | 2 | 8 
3 | 3 | 2 | 9 

将具有固定的行/列像A,B,光盘。 你可以在SQL Server 2005/2008中提出一个查询吗?

+0

如果什么d具有4行? –

+2

您需要另一列来获得确定性结果。 –

+0

同意马丁。利用现有的数据,绝对没有办法告诉SQL Server您希望B/5在B/3之前到来。表中还有什么其他栏目? –

回答

1

最好知道表中的聚簇键,因为结果后的顺序可能会有所不同。马丁是正确的,尝试了这一点,就会让你开始:

SELECT pvt.A, 
     pvt.B, 
     pvt.C, 
     pvt.D 
FROM (SELECT *, 
       row=ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY (SELECT 1)) 
     FROM yourtable) AS A 
     PIVOT (MIN(Column2) FOR Column1 IN ([A], [B], [C], [D])) 
     AS pvt