我正在尝试编写一个查询,它会在一个名为transactions的表中给我每个月的最后一个条目。我相信我已经到了一半,因为我有以下查询,按月对所有条目进行分组,然后选择每个组中最高的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
我已经尝试了子查询并查看了连接,但我不确定如何使用它们。
答案 0 :(得分:6)
您可以先选择内嵌视图,然后加入其中。这样的事情(没有测试,但应该给你的想法):
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