[英]How do you filter a composite key in the where clause?
我正在嘗試使用組合鍵來過濾查詢,但是,我不確定如何在where子句中使用復合鍵來過濾查詢。 XSiteProductItemId
和MercuryProductItemId
組成一個標識唯一行的復合鍵。
這是我的查詢:
SELECT VMPOrdersExtract.XSiteProductItemId
, VMPOrdersExtract.MercuryProductItemId
FROM Appraisal.ext.VMPOrders AS VMPOrdersExtract
LEFT JOIN dw.DimAppraisal DimApprasial ON DimApprasial.XsiteProductItemId = VMPOrdersExtract.XSiteProductItemId
AND DimApprasial.MercuryProductItemId = VMPOrdersExtract.MercuryProductItemId
WHERE VMPOrdersExtract.LastSyncDateTime > DimApprasial.LastSyncDateTime
OR (
VMPOrdersExtract.XSiteProductItemId
AND VMPOrdersExtract.MercuryProductItemId
) is null
顯然,我在WHERE
子句中的OR
條件在語法上是錯誤的。 如何僅過濾在DimAppraisal
表中為null
或不存在的組合鍵記錄?
怎么樣
WHERE VMPOrdersExtract.LastSyncDateTime > DimApprasial.LastSyncDateTime
OR (VMPOrdersExtract.XSiteProductItemId IS NULL AND
VMPOrdersExtract.MercuryProductItemId IS NULL);
也將其添加到答案中;)
SELECT VMPOrdersExtract.XSiteProductItemId, VMPOrdersExtract.MercuryProductItemId
FROM Appraisal.ext.VMPOrders AS VMPOrdersExtract LEFT JOIN dw.DimAppraisal DimApprasial
ON DimApprasial.XsiteProductItemId = VMPOrdersExtract.XSiteProductItemId AND
DimApprasial.MercuryProductItemId = VMPOrdersExtract.MercuryProductItemId WHERE
VMPOrdersExtract.LastSyncDateTime > DimApprasial.LastSyncDateTime OR
(VMPOrdersExtract.XSiteProductItemId is null AND VMPOrdersExtract.MercuryProductItemId is null)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.