【解決方法】グループ ID (特定のグループ) が存在する場合は最大の日付を見つけ、それ以外の場合はすべてのグループ ID が存在する最新の日付を見つける方法


こんにちは皆さん、

processID   date
75          26-06-2023
18          27-06-2023
75          27-06-2023
89          27-06-2023
98          27-06-2023
18          28-06-2023
18          29-06-2023
75          29-06-2023
89          29-06-2023
98          29-06-2023

上の表では、グループ内に 4 つの ID がすべて存在するプロセス ID のグループ (ここではグループ – プロセス ID = 18,75,89,98) が利用可能な最大の日付が必要です。 存在する ID が 1 つ少ない場合、最大値は 4 つの ID がすべて存在する最新の日付を意味します。 つまり、6 月 27 日にクエリを実行した場合、最大日付は 6 月 27 日として取得されるはずです (ここでは 4 つのプロセス ID がすべて存在するため)。6 月 28 日にクエリを実行した場合でも、6 月 27 日として日付が取得されるはずです (6 月 28 日では取得できないため) 4 つのプロセス ID がすべて存在しますが、プロセス ID=18 のみが存在します。)これを実現するにはどうすればよいですか?

私は試しました:プロセスID IN (18,75,89,98)のテーブルからmax(date)を選択しますが、ここでは4つのプロセスIDすべてが存在するかどうかを考慮せずにプロセスIDの最大値を与えます。 何をすべきか?

私が試したこと:

select max(date) from table where processID IN (18,75,89,98) ですが、ここでは 4 つのプロセス ID がすべて存在するかどうかを考慮せずに、プロセス ID の最大値を与えます。 何をすべきか?

解決策 1

GROUP BY を使用します。

SQL
SELECT ProcessID, MAX(DATE) FROM MyTable GROUP BY ProcessID

SQL GROUP BY ステートメント[^] そしておそらくここも見てみる価値があります: SQL GROUP By および「列 ‘name’ は選択リストでは無効です。理由は…」エラー[^]

コメント

タイトルとURLをコピーしました