当特定列值不存在时,如何 return 键值?

How do I return a key value when a specific column value is NOT present?

这是我的 SALESORDERLINES 的简化示例 table:

ORDER LINE ITEM
100 1 ITEMA
100 2 ITEMB
100 3 FEE
101 1 ITEMA
101 2 FEE
102 1 ITEMC
102 2 ITEMD
102 3 ITEME
103 1 ITEMA
103 2 FEE
104 1 ITEMB
104 2 ITEMC

table 的键值是 ORDER 和 LINE。

每个订单的最后一行项目应该是项目“费用”,但有时订单条目会忘记包含它。我正在尝试查找他们未能在订单中包含费用的所有实例。

所以对于上面的示例数据,我只想return订购编号 102 和 104。

有什么想法吗?

只是一个猜测,因为您没有指定您想要的结果集。肯定还有另一个 table 您没有包含它代表“订单”- 可能名为 SALESORDERS?

假设,那么我建议:

select ord."ORDER" -- a terrible idea to use reserved words as names
  from dbo.SALESORDERS as ord 
where not exists (select * from dbo.SALESORDERLINES as ordlines 
       where ord."ORDER" = ordlines."ORDER" and ordlines.ITEM = 'FEE')
order by ...;

当然还有其他方法。除了想到。

试试这个:

SELECT ORDER
FROM TableA
WHERE ORDER NOT IN (   
      SELECT ORDER
      FROM TableA
      WHERE ITEM = 'FEE'
      GROUP BY ORDER)
GROUP BY ORDER