我有一张表格如下:
bill_id | date | bill_amount
1234 | 20-06-2013 | 800
1200 | 18-06-2013 | 1500
1000 | 15-05-2013 | 2000
950 | 10-05-2013 | 2500
900 | 20-04-2013 | 750
我想显示过去3个月的账单。 如果每月有多个账单,我想显示最近的账单(例如,6月份为bill_id 1234,5月份为1000)。
我可以使用IN查询(通过使用group by for month和year并考虑特定月份的最大bill_id)来执行此操作。但我的问题是,是否可以在单个查询中实现相同的输出?
答案 0 :(得分:0)
是的,使用substring_index()
/ group_concat()
技巧:
select substring_index(group_concat(bill_id order by date, bill_id desc desc), ',', 1) as bill_id,
max(date) as date,
substring_idnex(group-concat(bill_amount order by date, bill_id desc), ',', 1) as bill_amount
from bills
group by year(date), month(date)