2010-10-10 152 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

相关问题