• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLについて)

SQLの困りごと

このQ&Aのポイント
  • SQLの作成に困っており、資料の送付対象店舗を一覧表示したいです。
  • 資料が送付されたが、実際には送付すべきではなかったデータも一緒に表示したいです。
  • UNIONを使用せずに正しい結果を出力する方法を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

テーブルのキー情報や具体的なデータが不明なので的外れかもしれませんが、 店舗への送付情報と資料送付済みをfull joinしたものをお客さん情報と結合すればいいのではないでしょうか。 SELECT , お客さん情報.年度 , お客さん情報.顧客CD , お客さん情報.顧客名 , 送付_送付済情報.送付店舗CD , 送付_送付済情報.送付済み店舗CD , 送付ステータス = case when 送付_送付済情報.送付店舗CD = NULL and 送付_送付済情報.送付済み店舗CD != NULL then '送付間違い' else '' end FROM (select * from お客さん情報 where 年度 = @年度 ) お客さん情報 --1 メインテーブル left join ( select 店舗への送付情報.顧客CD 送付顧客CD , 店舗への送付情報.店舗CD 送付店舗CD , 資料送付済み.顧客CD 送付済み顧客CD , 資料送付済み.店舗CD 送付済み店舗CD from (select * from 店舗への送付情報 where 年度 = @年度) 店舗への送付情報 --2 資料の送付対象店舗情報を保持 full join ( select * from 資料送付済み where 年度 = @年度) 資料送付済み --3 資料の送付済み情報を保持 on 店舗への送付情報.顧客CD = 資料送付済み.顧客CD and 店舗への送付情報.店舗CD = 資料送付済み.店舗CD) 送付_送付済情報 on (お客さん情報.顧客CD = 送付_送付済情報.送付顧客CD or お客さん情報.顧客CD = 送付_送付済情報.送付済み顧客CD) ; 店舗名はどちらの店舗CDから取得すればいいのか不明なので省略しました。 SQLServerの環境がないので動作確認はしていません。 #SQLServerの場合はNULLとの比較は "=" や "!=" でも出来るのですよね?

関連するQ&A

専門家に質問してみよう