前提・実現したいこと
マスタとなる取引担当テーブル(TRANS_TBL)と
それに変更を加える際に必要な情報が入った申込取引担当テーブル(APPLI_TRANS_TBL)があります。
APPLI_TRANS_TBLの部署コードまでと一致する、かつ削除フラグが0(有効)なTRANS_TBLを取得し、
APPLI_TRANS_TBLと結合します。
■TRANS_TBL(マスタ)
地域コード | 会社コード | 部署コード | 担当者コード | 削除フラグ |
---|---|---|---|---|
1000 | 200 | 10 | 01 | 0 |
1000 | 200 | 10 | 02 | 0 |
1000 | 200 | 20 | 03 | 0 |
■APPLI_TRANS_TBL(申込内容)
申込番号 | 地域コード | 会社コード | 部署コード | 担当者コード | 削除フラグ |
---|---|---|---|---|---|
2018102101 | 1000 | 200 | 10 | 01 | 1 |
2018102101 | 1000 | 200 | 10 | 03 | 0 |
■結合後
地域コード | 会社コード | 部署コード | 担当者コード | 削除フラグ |
---|---|---|---|---|
1000 | 200 | 10 | 01 | 0 |
1000 | 200 | 10 | 02 | 0 |
1000 | 200 | 10 | 01 | 1 |
1000 | 200 | 10 | 03 | 0 |
この結合したものから、
・削除フラグが「1」のもの
・↑と担当者コードまで一致するTRANS_TBL(論理削除されるマスタ)
を除外したいです。
■期待結果
地域コード | 会社コード | 部署コード | 担当者コード | 削除フラグ |
---|---|---|---|---|
1000 | 200 | 10 | 02 | 0 |
1000 | 200 | 10 | 03 | 0 |
試したこと
SQL
1SELECT 2B.地域コード 3B.会社コード 4B.部署コード 5B.担当者コード 6B.削除フラグ 7FROM 8TRANS_TBL AS B 9WHERE 10B.地域コード = '1000' 11B.会社コード = '200 12B.部署コード = '10' 13B.削除フラグ = '0' 14 15UNON ALL 16 17SELECT 18A.地域コード 19A.会社コード 20A.部署コード 21A.担当者コード 22A.削除フラグ 23FROM 24APPLI_TRANS_TBL AS A 25WHERE 26A.申込番号 '2018102101' 27A.地域コード = '1000' 28A.会社コード = '200 29A.部署コード = '10' 30AND NOT EXISTS( 31SELECT * 32FROM TRANS_TBL AS BB 33A.地域コード = BB.地域コード 34A.会社コード = BB.会社コード 35A.部署コード = BB.部署コード 36A.担当者コード = BB.担当者コード 37)
■結果
地域コード | 会社コード | 部署コード | 担当者コード | 削除フラグ |
---|---|---|---|---|
1000 | 200 | 10 | 01 | 0 |
1000 | 200 | 10 | 02 | 0 |
1000 | 200 | 10 | 03 | 0 |
・削除フラグが「1」のAPPLI_TRANS_TBLは除外される
・論理削除されるTRANS_TBLが除外されない
背景
変更内容のファイル出力の条件分岐に必要となるSQLになります。
部署単位で見た際、削除フラグが0(有効)のものが存在しない場合にファイル出力をします。
ファイル出力→マスタ変更処理の順で行われるため、
一度マスタと申込内容を結合し、その後、削除申込と削除されるマスタを除外して、
レコード存在チェックをしています。
補足情報(FW/ツールのバージョンなど)
企業向けの一般的でないSQLを使用していますが、
記載方法に関してはほぼMySQLなどのメジャーなものと変わらない認識です。
初心者ゆえ分かりづらい表現が多いかもしれません、申し訳ございません。
お手数ですが、何卒よろしくお願い致します。
(追記)
説明不足ですみません。
存在チェック自体は部署コード単位なのですが、
除外する、しないは担当者コード単位で行いたいのです。
また、同じ申込番号で、
レコードは分かれますが、追加と削除どちらも行うことが出来るため
(この場合、
担当者コード01が削除、03が追加)
一度担当者コード含めた主キーを取得して、
削除されるマスタ・削除申込を除外し
削除されないマスタ、追加される申込を残したい所存です。
何卒よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。