我有一个查询,该查询正在提取工作流程“A”中上述所有产品序列号的数据。但是,在某些情况下,工作流程 A 和 B 中都有序列号。当发生这种情况时,我根本不想提取该序列号。但是,我不能只执行 WHERE Workflow <> 'B' 这样的简单语句,因为它仍然会提取 Workflow = 'A' 的数据行。有谁知道如何在 SELECT 语句中解决这个问题还是需要在上游进一步处理?
您可以使用
NOT EXISTS
来实现这一点,尽管还有(可能更复杂)其他方法可能只需要单个表访问。
SELECT ... FROM dbo.TableName AS t
WHERE Workflow = 'A'
AND NOT EXISTS
(
SELECT 1 FROM dbo.TableName AS b
WHERE b.[Serial Number] = t.[Serial Number]
AND b.Workflow = 'B'
);