【发布时间】:2019-03-24 19:29:30
【问题描述】:
我正在尝试使用复合键过滤查询,但是,我不确定如何在 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 条件在语法上不正确。如何仅过滤 null 或 DimAppraisal 表中不存在的复合键记录?
【问题讨论】:
-
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 或(VMPOrdersExtract.XSiteProductItemId 为空且 VMPOrdersExtract.MercuryProductItemId 为空)
标签: sql sql-server tsql where-clause dml