2010-10-10 211 views
1

我想寫一個查詢,它會給我在一個稱爲交易的表中每個月的最後一個條目。我相信我已經達到了一半,因爲我有以下查詢按月對所有條目進行分組,然後在每個組中選擇最高的ID,這是每個月的最後一個條目。如何在另一個查詢中使用查詢結果?

SELECT max(id), 
EXTRACT(YEAR_MONTH FROM date) as yyyymm 
FROM transactions 
GROUP BY yyyymm 

給出正確的結果

id yyyymm 
100 201006 
105 201007 
111 201008 
118 201009 
120 201010 

我不知道如何再運行在同一個表的查詢,但選擇它的ID從第一查詢得出的結果相匹配的餘額列

id balance date 
120 10000  2010-10-08 
118 11000  2010-09-29 

我試過子查詢,看着加入,但我不知道如何去使用它們。

回答

5

你可以讓你的第一個選擇一個內聯視圖,然後加入它。像這樣的東西(沒有測試,但應該給你的想法):

SELECT x.id 
    , t.balance 
    , t.date 
    FROM your_table t 
     /* here, we make your select an inline view, then we can join to it */ 
    , (SELECT max(id) id, 
     EXTRACT(YEAR_MONTH FROM date) as yyyymm 
     FROM transactions 
     GROUP BY yyyymm) x 
WHERE t.id = x.id 
+0

Thankyou,爲我工作! – Andrew 2010-10-11 00:07:37

+0

@Andrew - 很高興聽到它,如果它解決了問題,請不要忘記接受答案,謝謝。 – dcp 2010-10-11 00:09:36

相關問題