下記の状況にありSQLで本当に最新のものだけを取得するのに必要なSQL構文が思い浮かばずに詰まってしまっています。
下記の例で書いているような状況でMAIN_CODEの重複をなくして最新のMAIN_CODE, SUB_CODEを取得したいですが、
GROUP BYでやると両列の重複は消えますがMAIN_CODEは重複でもSUB_CODEが違えば残ってしまいます。
どうすればいいでしょうか?
■大元のテーブル A
MAIN_CODE | SUB_CODE | DATE |
---|---|---|
ABCDEF | 1234 | 20000401 |
BBBCCC | 1234 | 19990401 |
ABCDEF | 3456 | 20050401 |
BBBCCC | 2345 | 20000401 |
ABCDEF | 1234 | 20200401 |
CCCDDD | 2222 | 19990401 |
CCCDDD | 2222 | 20000401 |
CCCDDD | 2233 | 20200401 |
ABCDEF | 2244 | 20210401 |
DDDEEE | 9999 | 20000401 |
DDDEEE | 9999 | 20210401 |
■SQLクエリ
SQL
1SELECT MAIN_CODE, SUB_CODE, MAX(DATE) 2FROM A 3GROUP BY MAIN_CODE, SUB_CODE
■出力
MAIN_CODE | SUB_CODE | DATE |
---|---|---|
BBBCCC | 1234 | 19990401 |
ABCDEF | 3456 | 20050401 |
BBBCCC | 2345 | 20000401 |
ABCDEF | 1234 | 20200401 |
CCCDDD | 2222 | 20000401 |
CCCDDD | 2233 | 20200401 |
ABCDEF | 2244 | 20210401 |
DDDEEE | 9999 | 20210401 |
★欲しいアウトプット
MAIN_CODE | SUB_CODE | DATE |
---|---|---|
BBBCCC | 2345 | 20000401 |
CCCDDD | 2233 | 20200401 |
ABCDEF | 2244 | 20210401 |
DDDEEE | 9999 | 20210401 |

回答1件
あなたの回答
tips
プレビュー