我有一张这样的表
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,C,D。 你能在SQL Server 2005/2008中推荐一个查询吗?
答案 0 :(得分: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