我正在尝试创建一个SQL查询,该查询显示未经过凭证的所有采购订单的列表。在我们当前检查PO是否已被提票的系统中,AP工作人员点击进入PO并单击选项卡,其中显示的数据类似于以下数据。
这是Vouchered PO的一个例子。 AP购买行可以购买。
一个不受欢迎的PO会是这样的。如您所见,它缺少AP购买的行条目,将其标记为Vouchered。
如果我想重新创建vouchered PO的结果,我的代码将如下所示:
select
imhstry_dte_effctve as DateEffective,
imhstry_srce_jrnl as SourceJournal,
prchseordr_id as 'PO ID',
sum(imhstry_qntty_ordrd) as QuantityOrdered,
sum(imhstry_qntty_rcvd) as QuantityReceived,
sum(imhstry_qntty_invcd_ap) as Vouchered
from imhstry
left join prchseordr on imhstry.imhstry_ordr_id = prchseordr.prchseordr_id
Where prchseordr_id = '1234'
group by
imhstry.imhstry_itm_dscrptn,
imhstry.imhstry_dte_effctve,
imhstry.imhstry_srce_jrnl,
prchseordr.prchseordr_id
我想要做的是创建一个查询,该查询显示我们系统中当前尚未购买的所有采购订单的简单列表,如果可能的话,还显示尚未完全兑现的所有采购订单。我有一种感觉,这是非常直接的,但我陷入困境,无法想到如何解决这个问题。非常感谢任何帮助。
如果不清楚或需要更多信息,请告诉我。
答案 0 :(得分:2)
首先,
left join prchseordr on imhstry.imhstry_ordr_id = prchseordr.prchseordr_id
Where prchseordr_id = '1234'
实际上是inner join
。你确定吗?如果需要左连接,则更改
left join prchseordr on imhstry.imhstry_ordr_id = prchseordr.prchseordr_id
Where imhstry.imhstry_ordr_id = '1234'
从您的示例数据看起来您只需从imhstry_srce_jrnl
和SELECT
删除GROUP BY
,然后根据要求添加HAVING sum(imhstry_qntty_invcd_ap) = 0
或HAVING sum(imhstry_qntty_invcd_ap) < sum(imhstry_qntty_ordrd)
。