ご教授願います。
SQLSERVERにて、以下の【対象テーブル】から【抽出条件】でデータを抽出したいです。
いろいろ調べてますが、うまくいかず困っています。ご協力をお願いします。
【抽出条件】
同一キー単位で1レコードずつ以下の条件で抽出する。
①同一キー単位でコードに「AA」または「BB」が存在する場合はそのレコードを抽出対象とする。(No.1 No.4を抽出)
②「AA」または「BB」が存在しない場合は日付が最新のレコードを抽出対象とする。(No.8を抽出)
③キーが重複していない場合はそのまま抽出対象とする。(No.9の抽出)
【対象テーブル】
No キー コード 日付
1 001 AA 20190501
2 001 30 20190502
3 002 40 20190601
4 002 BB 20190602
5 002 50 20190603
6 003 60 20190401
7 003 70 20190402
8 003 80 20190403
9 004 10 20190101
↓
【抽出後】
No キー コード 日付
1 001 AA 20190501
4 002 BB 20190602
8 003 80 20190403
9 004 10 20190101
No.1ベストアンサー
- 回答日時:
③は別の条件に見えるますが、実際は、①か②の条件で抽出されます。
つまり
「・AAまたはBBを含むキー かつ コードがAAまたはBB
または
・AAまたはBBを含まないキー かつ 日付がキーの中で最大」
が検出条件になります。
いろんなやり方があると思いますが、一例です)
T1: AAまたはBBを含むキーの一覧テーブル/副クエリ/ビュー等
元テーブルとT1を キーで LEFT JOIN すると、T1.キー がNULLかどうかで、 「AAまたはBBを含むキー」か「AAまたはBBを含まないキー」の判定ができる。
T2: キー, max(日付) as 最大日付 のテーブル/副クエリ/ビュー等
元テーブルとT2を キーで LEFT JOIN すると、元テーブル.日付 =T2.最大日付かどうかで、 「キーの中で最大の日付かどうか」の判定ができる。
両方合わせて
FRON 元テーブル LEFT JOIN T1 〜 LEFT JOIN T2 〜
で一つのテーブルにして、抽出できる
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Excel(エクセル) 【詳しい方教えて下さい】EXCEL条件に一致する値の複数抽出 9 2022/04/29 10:56
- Excel(エクセル) エクセルで重複データを行ごとに抽出したい 4 2022/12/05 08:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのSQLで、NULLかNULLでな...
-
sqlserverで集計結果をUPDATEし...
-
オラクルではできるのにSQLSERV...
-
シャープレジスター エラーコード
-
アクセス 日付抽出(年月のみ)...
-
sqlplusでバックスペースが効か...
-
MAX値を条件にデータを取得する...
-
sqlserverで対象のレコードを削...
-
AccessのSQLで、FROM句の構文エ...
-
ACCESSで複数テーブルを結合し...
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
3つ以上のテーブルをUNIONする...
-
[ BETWEEN ] vs [ >= AND <= ]
-
Accessでレコードが更新された...
-
データの二重表示の原因
-
SELECT時の行ロックの必要性に...
-
mysql IN句に1データだけ指定...
-
エクセルでテーブルの最終行が...
-
Accessでフィールドを比較した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オラクルではできるのにSQLSERV...
-
ACCESSのSQLで、NULLかNULLでな...
-
sqlserverで集計結果をUPDATEし...
-
アクセス 日付抽出(年月のみ)...
-
ACCESSで複数テーブルを結合し...
-
MAX値を条件にデータを取得する...
-
更新クエリでキー違反
-
AccessのSQLで、FROM句の構文エ...
-
違いを教えてください
-
sqlserverで対象のレコードを削...
-
シャープレジスター エラーコード
-
accessでのリンクテーブルの更新
-
access前月差分クエリ書き換え...
-
sqlplusでバックスペースが効か...
-
MySQLのON DUPLICATE KEY UP
-
sqlserverで同一キー単位で金額...
-
sqlserverでUPDATEできません
-
Access2000へのインポートエラー
-
片方のテーブルにないデータを...
-
集計処理について
おすすめ情報