說我有一個表稱爲#ListTable:比較兩個表,並返回行不存在基於多個領域比較
Item:
Apple
Bannana
Pea
Milk
Green
而另一個表食品類似於:
Date Fruit Vegetable Dairy Color
2/16/17 Apple NULL NULL Green
2/16/17 NULL Pea NULL Green
2/16/17 NULL NULL Milk White
如果列表中的值存在於Food Table中,我想返回記錄。
所以我有這樣的:
DECLARE @Date = '2/16/17',
@InclusionFlag = 1
SELECT *
FROM Food F
INNER JOIN #ListTable LT1
ON F.Fruit = LT1.Item
WHERE Date = @Date
UNION ALL
SELECT *
FROM Food F
INNER JOIN #ListTable LT2
ON F.Color = LT1.Item
WHERE Date = @Date
...
本質返回記錄,如果在列表中的項目對應於我指定的領域之一。我知道蘋果可能會有「重複」的記錄是「蘋果」和「綠色」,我想要。
但是,我也希望能夠將包含標誌切換爲0並返回ListTable中與Food中的任何字段都不匹配的項目。
我將如何返回不匹配的證券列表?我知道有類似的問題,但我很難找出多場比較案例。
感謝
使用存儲過程與'IF ... ELSE處理'InclusionFlag' ... '。然後寫每個列的適當查詢 –
我明白這一點。我只是遇到了其他部分 – user3697498