[SQL]行轉列和列轉行
阿新 • • 發佈:2018-12-18
1、測試資料集
username | subject | score | |
1 | 張三 | 語文 | 80 |
2 | 張三 | 數學 | 90 |
3 | 張三 | 生物 | 85 |
4 | 李四 | 語文 | 80 |
5 | 李四 | 數學 | 80 |
... |
2、行轉列
select * from student_score
as P
PIVOT
(
sum(score) for
p.subject IN ([語文],[數學],[英語],[生物])
) as T
執行結果:
username | 語文 | 數學 | 英語 | 生物 |
1 | 張三 | 80 | 90 | 85 |
2 | 李四 | 80 | 80 |
3、列轉行
測試資料:
projectname | overseasupply | nativesupply | southsupply | northsupply | |
1 |
A |
100 | 200 | 50 | 50 |
2 | B | 200 | 300 | 150 | 150 |
3 | C | 159 | 400 | 20 | 320 |
4 | D | 250 | 30 | 15 | 15 |
SELECT P.projectname,p.supplier,p.supplynum FROM ( select projectname ,overseasupply ,nativesupply ,southsupply ,northsupply from projectdetail )T UNPIVOT ( supplynum for supplier IN (overseasupply,nativesupply,southsupply,northsupply) )P
projectname | supplier | supplynum | |
1 | A | overseasupply | 100 |
2 | A | nativesupply | 200 |
3 | A | southsupply | 50 |
4 | A | northsupply | 50 |
5 | B | overseasupply | 200 |
6 | B | nativesupply | 300 |
... |