[SQL] 如何取得GROUP裡 對應某一欄位值的另一欄位資料

看板Database作者 (認真魔人)時間15年前 (2010/05/31 19:25), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
我實在不太知道該怎麼下這篇文章的標題才對>"< 問題如下: 我的資料表(稱之為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
文章代碼(AID): #1C0voFvg (Database)