2016-04-29 83 views
0

我正在尝试创建一个SQL查询,显示所有未获得凭证的采购订单的列表。在我们目前的系统中,检查采购订单是否已经获得授权,采购员工的成员点击进入采购订单,然后点击一个标签,在那里显示类似于以下内容的数据。找到未授权的采购订单

这是Vouchered PO的示例。 AP购物线凭证购买。

enter image description here

的unvouchered PO是这样的。您可以看到它缺少AP Purchase的行条目,将其标记为Vouchered。 enter image description here

如果我想重新对给据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

imhstry和prchseordr的表定义将帮助很多,即使您试图解释您的问题良好ddl和预期的结果更清晰,也预期的结果。 – MrSimpleMind

回答

2

首先,

left join prchseordr on imhstry.imhstry_ordr_id = prchseordr.prchseordr_id 
Where prchseordr_id = '1234' 

是有效inner join。你确定?如果不加入是requried然后改变它

left join prchseordr on imhstry.imhstry_ordr_id = prchseordr.prchseordr_id 
Where imhstry.imhstry_ordr_id = '1234' 

从你的样本数据,它看起来像你只需要从SELECTGROUP BY下降imhstry_srce_jrnl并添加要求HAVING sum(imhstry_qntty_invcd_ap) = 0HAVING sum(imhstry_qntty_invcd_ap) < sum(imhstry_qntty_ordrd)依赖。

+0

谢谢Serg!我知道这比我制作它简单得多。一旦我放弃了源期刊和生效日期,我就能够使其工作! –

相关问题