SQL Server SELECT 语句在 WHERE 中包含“IF”?

问题描述 投票:0回答:1

我有一个查询,该查询正在提取工作流程“A”中上述所有产品序列号的数据。但是,在某些情况下,工作流程 A 和 B 中都有序列号。当发生这种情况时,我根本不想提取该序列号。但是,我不能只执行 WHERE Workflow <> 'B' 这样的简单语句,因为它仍然会提取 Workflow = 'A' 的数据行。有谁知道如何在 SELECT 语句中解决这个问题还是需要在上游进一步处理?

sql sql-server if-statement select where-clause
1个回答
0
投票

您可以使用

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'
);
© www.soinside.com 2019 - 2024. All rights reserved.