我正在尋找一種快速有效的方式來轉換:轉換行與列WHERE條件SQL Server 2008中
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
有20萬條左右表中的記錄,使用SQL Server 2008.
我正在尋找一種快速有效的方式來轉換:轉換行與列WHERE條件SQL Server 2008中
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
有20萬條左右表中的記錄,使用SQL Server 2008.
有幾種不同的方式可以得到結果。您可以使用具有聚合函數的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,那麼你可以使用旋轉功能:
select id, Damages, Other
from yourtable
pivot
(
sum(amount)
for type in (Damages, Other)
) piv
問題要求代碼必須證明正在解決這個問題的一個最小的理解。包括嘗試解決方案,以及爲什麼他們不工作。 – Kermit
你應該嘗試一些東西.. – Mihai
我不知道從哪裏開始,因此沒有嘗試抱歉。 – Jammy