t1 と t2 の 2 つのテーブルがあります。t1 はコントラクト番号を保持し、t2 はそれらのコントラクトのコントラクト イベントを保持します。
t1 からのすべてのコントラクトと、t1 に一致する t2 からのすべてのレコードを選択しようとしていますが、t2 と一致しない t1 からのすべてのレコードを返そうとしています。私のクエリは、両方のテーブルに一致するすべてのレコードを返すようです。
私が試してみました:
- 左結合
- 内部結合と
- 左外部結合
それでも同じ結果が得られます。
t1 には 293 の結果が保持され、t2 には 270 のイベントが保持されます。一部の t2 イベントには 1 つの contractid に対して複数のイベントがあり、一部のアカウントにはイベントが登録されていません。
すべての とそれにcontractID
リンクされたすべてのイベントを戻したいのですが、イベントがなく、列contractID
に null があるコントラクトも返したいです。contractID
私の現在のクエリ:
SELECT p.contractfk
,[GetEnddate](p.ContractFK) [Contract End Date] -- function
,CASE
WHEN c.StartDate IS NULL THEN 1
WHEN c.StartDate > ce.CreatedDate THEN 1
ELSE 0
END [PreEngineer]
,CASE
WHEN c.StartDate < ce.CreatedDate THEN 1 ELSE 0
END [PostEngineer]
FROM [CRM].[pbx].[PBX] p
LEFT JOIN [ContractEnquiry] ce
ON ce.ContractFK = p.ContractFK
LEFT JOIN [Contract] c
ON [c].[contractID] = [P].[contractfk]