当特定列值不存在时,如何 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
这是我的 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