0

次のようなテーブルがあります。

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を使用し、特定の月-年の最大bill_idを考慮することにより)。しかし、私の質問は、単一のクエリで同じ出力を達成することは可能ですか?

4

1 に答える 1

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)
于 2013-06-21T15:14:39.023 に答える