with data as (
select *, row_number() over (partition by ID order by ID) as rowid
from (
values (1, 'Joe', 1234),
(1, 'Marie', 5678),
(1, 'Ron', 2222),
(1, 'Tom', 4444)
) t (ID, Name, Number)
)
select t.ID, t.[1] as Name, t2.[1] as Number, t.[2] as Name, t2.[2] as Number,
t.[3] as Name, t2.[3] as Number, t.[4] as Name, t2.[4] as Number
from (
select ID, Name, rowid
from data
) d pivot (min(Name) for rowid in ([1], [2], [3], [4])) t
inner join (
select ID, Number, rowid
from data
) d2 pivot (min(Number) for rowid in ([1], [2], [3], [4])) t2 on t.ID = t2.ID
結果集應顯示,如果你有另一行:'1 | Jimbo | 9999 |'?看起來像是一個非常古怪的結果。 – Yuck 2013-04-26 02:37:04