私はテーブル1のすべての項目をtable2に入れたいと思っています。これは、以下の最初の内部ジョイン基準を満たしています(これはwork findです)。このscenerioのSQLクエリを書く方法は?
次に、例外があるかどうかをtable3にチェックします。例外は参照番号のベースです(REF_NO)。参照番号がtable3に存在する場合は、ストア番号(STORE_NO)が一致するかどうかを確認する必要があります。一致した場合は、table1の一致するレコードが必要です。そうでなければ、一致するレコードをtable1から除外します。
ただし、参照番号がtable3に存在しない場合は、table2と一致するtable1のレコードが必要です。
おかげ
USE master
GO
table1
table2
table3
SELECT
T1.TERMINAL,
T1.OPERATOR,
T1.TRANS_NO,
T1.SEQ_NO,
T1.STORE_NO,
T2.REF_NO,
T2.SDATE,
T2.EDATE,
T1.POS_DATE,
T1.ITEM,
T1.ITYPE,
T1.SOLD_QTY,
T1.PRICE,
T2.OI_AMT
FROM [table1] As T1
INNER JOIN [table2] As T2
ON (T1.ITEM = T2.ITEM) And (T1.POS_DATE BETWEEN T2.SDATE And T2.EDATE)
INNER JOIN [table3] As T3
ON (T2.REF_NO = T3.REF_NO) And (T1.STORE_NO = T3.STORE)
テーブル3へのLEFT JOINはどうですか?次にwhere句を指定します。 –