您可以结合使用PIVOT
与ROW_NUMBER()
排名功能。
SELECT Acct, [1] as [Master1], [2] as [Master2], [3] as [Master3]
FROM
(
SELECT Acct,
MasterAcct,
ROW_NUMBER() OVER(PARTITION BY acct ORDER BY MasterAcct) as mid
FROM tbl
) as t
PIVOT
(
MIN(MasterAcct)
FOR mid IN ([1], [2], [3])
) as p
SQL FIDDLE DEMO
可以实现在不使用PIVOT
相同的结果。以下查询很容易理解。
SELECT
Acct,
MAX(CASE WHEN mid=1 THEN MasterAcct END) as [Master1],
MAX(CASE WHEN mid=2 THEN MasterAcct END) as [Master2],
MAX(CASE WHEN mid=3 THEN MasterAcct END) as [Master3]
FROM
(
SELECT Acct,
MasterAcct,
ROW_NUMBER() OVER(PARTITION BY acct ORDER BY MasterAcct) as mid
FROM tbl
) t
GROUP BY Acct
SQL FIDDLE DEMO
的可能重复[SQL Server的PIVOT例子吗?(http://stackoverflow.com/questions/24470/sql-server-pivot-examples) –
的SQL Server版本你用吗? –
我使用sql server 2005 – user3456446