使用SQL將資料依橫向的方式呈現
最近被要求希望資料能夠以橫向的方式呈現
但以前我的作法可能會將資料貼到excel中
在以手動的作法來一筆一筆調整
如果資料的筆數少的話
這個方法還可以接受
但…如果有上千筆呢?
這方法可能就很蠢了
有其他種的方法可以解決嗎?
答案是…有的
以下是我的範例
假設我有資料
//tablename:得分明細
指標 | 員工編號 | 分數 |
A | 0000001 | 5 |
B | 0000001 | 8 |
C | 0000001 | 7 |
D | 0000001 | 6 |
E | 0000001 | 5 |
F | 0000001 | 1 |
G | 0000001 | 2 |
H | 0000001 | 8 |
以下省略 |
以上資料,員工人數有一千人,因表格太長所以以下省略
想要呈現的方式為
員工編號 | A | B | C | D | E | F | G | H |
0000001 | 5 | 8 | 7 | 6 | 5 | 1 | 2 | 8 |
0000002 | 6 | 3 | 7 | 8 | 2 | 5 | 7 | 0 |
以下省略 |
如果用excel調整…可能會瘋掉
使用sql就方便多了
Select A.員工編號 ,sum(A.A) AS A ,sum(A.B) AS B ,sum(A.C) AS C ,sum(A.D) AS D ,sum(A.E) AS E ,sum(A.F) AS F ,sum(A.G) AS G From( Select 員工編號, CASE 指標 WHEN 'A' THEN 分數 END AS A, CASE 指標 WHEN 'B' THEN 分數 END AS B, CASE 指標 WHEN 'C' THEN 分數 END AS C, CASE 指標 WHEN 'D THEN 分數 END AS D, CASE 指標 WHEN 'E' THEN 分數 END AS E, CASE 指標 WHEN 'F' THEN 分數 END AS F, CASE 指標 WHEN 'G' THEN 分數 END AS G, from 得分明細 ) As A Group by A.員工編號
這樣就可以解決了,夠簡單吧~^^