前提・実現したいこと
1つのテーブルにあるカラムの最大値を取得したいです。
最大値(最新日)を取得したいカラムは日付_1、日付_2で、その両方の値を取得したいのですが、結合条件を以下とした場合の書き方がいまいち分からず困っております。
取得したいテーブルはこちらです。
テーブル名:table_a
実施したいこと
①nameとA_numberに該当するそれぞれの日付_1と日付_2の最新日を取得したい。
②サブクエリにて結果を取得した後、他のカラム(id)が取得できていないためidも最終的に取得したいです。
----------------------------
| id | name | A_number | 日付_1 | 日付_2 |
----------------------------
| 1 | カラム_1 | A1 | 2020-01-01 | 2020-01-05 |
----------------------------
| 2 | カラム_1 | A1 | 2020-01-02 | 2020-01-01 |
----------------------------
| 3 | カラム_1 | A1 | 2020-01-03 | 2020-01-01 |
----------------------------
| 4 | カラム_1 | A1 | 2020-01-04 | 2020-01-01 |
----------------------------
想定の結果(最終的に取得したい結果)
----------------------------
| id | name | A_number | 日付_1 | 日付_2 |
----------------------------
| 1 | カラム_1 | A1 | 2020-01-01 | 2020-01-05 |
----------------------------
| 4 | カラム_1 | A1 | 2020-01-04 | 2020-01-01 |
----------------------------
発生している問題
なにも取得できない
実施したSQL
SELECT id, name, A_number, 日付_1, 日付_2 FROM table_a AS table_1 INNER JOIN (SELECT name AS NAME, A_number AS B_number, MAX(日付_1) AS Date1_B, MAX(日付_2) AS Date2_B FROM table_a GROUP BY name,A_number) AS table_2 ON table_1.name = table_2.name AND table_1.A_number = table_2.B_number AND table_1.日付_1 = table_2.Date1_B AND table_1.日付_2 = table_2.Date2_B
試したこと
結合条件を
table_1.name = table_2.name
AND table_1.A_number = table_2.B_number
AND table_1.日付_1 = table_2.Date1_B
または
table_1.name = table_2.name
AND table_1.A_number = table_2.B_number
AND table_1.日付_2 = table_2.Date2_B
した場合は、nameとA_numberに該当する日付_1または日付_2の最新日が取得できます。
また、サブクエリで結果を取得する際は日付_1、日付_2両方とも最新の日付を取得することができました。
補足情報(FW/ツールのバージョンなど)
SQLServerを使用しております。
SQLServer2017、SQL Server Developer
操作はWINDOWS10
SQLのバージョンは14.0.2027.2を使用しております。
初歩的な質問で申し訳ございません。
分かる方おりましたらご教示のほどよろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー