我正在寻找一种快速有效的转换方式:
ID Type Amount
0 Damages 1
0 Other 2
1 Damages 3
1 Other 4
2 Damages 5
2 Other 6
要
ID Damages Other
0 1 2
1 3 4
2 5 6
表中有大约200,000条记录,使用的是SQL Server 2008。
答案 0 :(得分:3)
您可以通过几种不同的方式获得结果。您可以使用带有聚合函数的CASE表达式:
select id,
sum(case when type ='Damages' then amount else 0 end) damages,
sum(case when type ='Other' then amount else 0 end) other
from yourtable
group by id;
见SQL Fiddle with Demo。或者,因为您使用的是SQL Server 2008,所以您可以使用PIVOT函数:
select id, Damages, Other
from yourtable
pivot
(
sum(amount)
for type in (Damages, Other)
) piv