[SQL] 如何取得GROUP裡 對應某一欄位值的另一欄位資料
我實在不太知道該怎麼下這篇文章的標題才對>"< 問題如下:
我的資料表(稱之為data)裡有七個欄位:
代號 名稱 日期 A B C D
我需要以代號跟名稱來分群,以日期作為條件式,A B C要取SUM
原本應該很簡單的寫成: (寫在microsoft query裡)
Select data.代號, data.名稱, sum(data.A), sum(data.B),
sum(data.c)
From data
WHERE data.日期>='20100501' and data.日期<='20100531'
GROUP BY data.代號, data.名稱
以上可以順利執行,不過 我現在想要加入D欄位
可是我是要在該群組裡 對應最大日期的D欄位的值
例如說, 在代號=100 名稱=XYZ的GROUP裡有三筆資料:
代號 名稱 日期 A B C D
100 XYZ 20100503 1 1 1 9
100 XYZ 20100509 1 1 1 3
100 XYZ 20100522 1 1 1 7
我希望跑出來的資料結果是:
100 XYZ 3 3 3 7
(A B C皆取sum故值為3, D我要取對應最大日期的那個值 故為7)
我無法對D下max函數 因為我要取的值不一定是最大值
我試過用case條件式:
SUM(CASE WHEN data.日期=max(data.日期) THEN data.D ELSE 0 END)
但是無法執行 似乎是因為彙總函數裡不能再放入彙總函數
可是如果不取SUM的話 CASE WHEN那一句又不是彙總函數 不能用在select裡面
有高手可以教教我 我該怎麼寫比較好嗎??>"<
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.211.36.254