1. ホーム
  2. sql

[解決済み] 行の日付が最大のテーブルから情報を選択する

2022-03-06 20:39:48

質問

私のテーブルは次のようなものです。

group    date      cash  checks
  1    1/1/2013     0      0
  2    1/1/2013     0      800
  1    1/3/2013     0      700
  3    1/1/2013     0      600
  1    1/2/2013     0      400
  3    1/5/2013     0      200

-- 現金は不要で、テーブルに多くの情報があることを示すだけです。

私は、日付が最大で、チェックが0より大きいユニークなグループを取得したいです。

group    date     checks
  2    1/1/2013    800
  1    1/3/2013    700
  3    1/5/2013    200

を試行したコードです。

SELECT group,MAX(date),checks
    FROM table
    WHERE checks>0
    GROUP BY group
    ORDER BY group DESC

しかし、その場合、最大の日付の行だけでなく、すべての日付とチェックが表示されるという問題があります。

ms sql server 2005 を使用しています。

解決方法は?

SELECT group,MAX(date) as max_date
FROM table
WHERE checks>0
GROUP BY group

他のカラムを取得するためにデータに結合してください。

Select group,max_date,checks
from table t
inner join 
(SELECT group,MAX(date) as max_date
FROM table
WHERE checks>0
GROUP BY group)a
on a.group = t.group and a.max_date = date

内部結合は、最大レコードのみを取得するためのフィルタとして機能します。

参考までに、あなたのカラム名はひどいですね。カラムに予約語(group、date、table)を使わないでください。