1. ホーム
  2. sql

[解決済み] 2つのユニークな列を持つ、直近の日付で行を選択するSQL

2022-03-07 21:37:15

質問

以下のクエリと結果を使用して、ChargeIdとChargeTypeが一意である最新のエントリを探しています。

select chargeId, chargeType, serviceMonth from invoice

    CHARGEID    CHARGETYPE  SERVICEMONTH
1   101         R           8/1/2008
2   161         N           2/1/2008
3   101         R           2/1/2008
4   101         R           3/1/2008
5   101         R           4/1/2008
6   101         R           5/1/2008
7   101         R           6/1/2008
8   101         R           7/1/2008

希望する

    CHARGEID    CHARGETYPE  SERVICEMONTH
1   101         R           8/1/2008
2   161         N           2/1/2008

解決方法は?

を使用することができます。 グループ BY を使用して、項目を種類とIDでグループ化します。 次に MAX() Aggregate関数で、直近のサービス月を取得します。 以下は、ChargeId, ChargeType, MostRecentServiceMonthを含む結果セットを返します。

SELECT
  CHARGEID,
  CHARGETYPE,
  MAX(SERVICEMONTH) AS "MostRecentServiceMonth"
FROM INVOICE
GROUP BY CHARGEID, CHARGETYPE