如果所有条件都等于一个特定值,是否有一种方法可以返回与SQL中的特定字段相关的输出

时间:2019-04-16 16:40:31

标签: sql sql-server select

我正在尝试从数据库中提取数据。我正在查询的数据与采购订单和采购订单行相关联。仅当每个采购订单行的状态为已填充且无其他任何情况时,我才想拉相关的采购订单。一些代码将这些信息如何转换为SQL。

PO's|POLine's|Status
===================
1   |0       |F
1   |1       |F      <-----PO is completely filled
1   |2       |F            and should be returned.
1   |3       |F
====================
2   |0       |O
2   |1       |F
2   |2       |F      <-----PO is not completely filled 
2   |3       |O            and shouldn't be returned.
2   |4       |P

2 个答案:

答案 0 :(得分:1)

不存在

select t1.* from table t1
where not exists ( select 1 from table t2 where t1.po=t2.po and
                                          t2.Status!='F')

online demo

答案 1 :(得分:1)

最简单的方法可能是计算未满足的PO行的数量,并确保其为0:

SELECT po
FROM   mytable
GROUP BY po
HAVING   COUNT(CASE WHEN status != 'F' THEN 1 END) = 0