1. ホーム
  2. sql

[解決済み] GROUP BY with MAX(DATE)【重複】について

2022-04-13 08:40:21

質問

各列車の最新の行き先(MAX発車時刻)をテーブルにリストアップしたいのですが、どうすればいいですか? 例えば :

Train    Dest      Time
1        HK        10:00
1        SH        12:00
1        SZ        14:00
2        HK        13:00
2        SH        09:00
2        SZ        07:00

望ましい結果であること。

Train    Dest      Time
1        SZ        14:00
2        HK        13:00

を使ってみました。

SELECT Train, Dest, MAX(Time)
FROM TrainTable
GROUP BY Train

というエラーが表示されました。しかし、確かにそれは私が欲しいものではありません...。

1行のSQLで可能でしょうか?

どのように解決するのですか?

グループ化されていないカラムを結果セットに含めることはできません。もし列車の行き先が1つだけなら、行き先のカラムをgroup by節に追加すればよいのですが、そうでない場合はクエリを見直す必要があります。

試してみてください。

SELECT t.Train, t.Dest, r.MaxTime
FROM (
      SELECT Train, MAX(Time) as MaxTime
      FROM TrainTable
      GROUP BY Train
) r
INNER JOIN TrainTable t
ON t.Train = r.Train AND t.Time = r.MaxTime