Sql 选择PO_ID在所有关联行的另一列中具有特定值的行

Sql 选择PO_ID在所有关联行的另一列中具有特定值的行,sql,sql-server-2014,Sql,Sql Server 2014,我正在尝试处理以下查询,以便可以查询每个业务单元和采购订单ID的所有行,这些行的所有关联行的取消状态值均为“a” 我认为一个例子可能是最好的方式来说明这一点。这是由业务部门和采购订单ID订购的: 绿色阴影的第4行集合是我希望包含在结果集中的集合,因为这些采购订单ID/业务单元组合行中的每一行都具有取消状态“A”。我想排除突出显示为红色的采购订单ID L010006793的行/行,因为其中一行的取消状态不等于“a” 我想我需要进行某种聚合,将采购订单ID/业务单元行的计数与取消状态值“a”进行比较

我正在尝试处理以下查询,以便可以查询每个业务单元和采购订单ID的所有行,这些行的所有关联行的取消状态值均为“a”

我认为一个例子可能是最好的方式来说明这一点。这是由业务部门和采购订单ID订购的:

绿色阴影的第4行集合是我希望包含在结果集中的集合,因为这些采购订单ID/业务单元组合行中的每一行都具有取消状态“A”。我想排除突出显示为红色的采购订单ID L010006793的行/行,因为其中一行的取消状态不等于“a”

我想我需要进行某种聚合,将采购订单ID/业务单元行的计数与取消状态值“a”进行比较,然后将其与该采购订单ID/业务单元的总行数进行比较,并筛选这些总数匹配的行,但也许我忽略了更简单的东西…

有条件的窗口计数在这里会很好:

选择 商务部, 邮政编码:, 波乌状态, 生产线编号:, 取消状态 从…起 选择 商业大学博士, 博厄德博士, 博士学位, pl.LINE_NBR, pl.CANCEL_状态, 当pl.CANCEL\u状态为“A”时计数,则1结束 按ph.BUSINESS_单位、ph.PO_ID countNotA划分 来自PS_PO_HDR ph 在pl.BUSINESS\u UNIT=ph.BUSINESS\u UNIT和pl.PO\u ID=ph.PO\u ID上的内部连接PS\u PO\u行pl 其中-A.PO_ID='A030010686' ph.PO_状态不在'C'、'X'、'PX' 和ph.PO_DT>=“2019年1月1日” T 其中countNotA=0 按业务单元、采购订单标识、取消状态排序的订单
我对此进行了更多的测试,我只希望查询为每个业务单元/采购订单ID组合引入一个标题行。在有多行的情况下,此查询为每行拉入一行,我只希望它输出一个标题行。所以我相信我仍然需要引用lines表PS_PO_LINE,但我不想为每一行引入多行?我如何做到这一点?我对此进行了更多的测试,我只希望查询为每个业务单元/采购订单ID组合拉入一个标题行。在有多行的情况下,此查询为每行拉入一行,我只希望它输出一个标题行。所以我认为我仍然需要参考lines表PS_PO_LINE并检查每一行的取消状态,但我不想为PO上的每一行拉入多行?我该怎么做?
SELECT A.BUSINESS_UNIT, A.PO_ID, A.PO_STATUS, B.LINE_NBR, B.CANCEL_STATUS
FROM PS_PO_HDR A
INNER JOIN PS_PO_LINE B ON B.BUSINESS_UNIT = A.BUSINESS_UNIT AND B.PO_ID = A.PO_ID
WHERE  --A.PO_ID = 'A030010686'
A.PO_STATUS NOT IN ('C','X','PX')
AND A.PO_DT >= '01-JAN-2019'
ORDER BY BUSINESS_UNIT, PO_ID, CANCEL_STATUS