我正在重写此帖子!
这是我的查询
SELECT ITEMNUM,
STORELOC,
TRANSDATE,
ACTUALDATE,
CONDITIONCODE,
ISSUETYPE,
QUANTITY,
CURBAL,
'' AS Balnce_In_Condition_02,
ENTERBY,
MEMO,
DOCNUM
FROM MATUSETRANS
WHERE ITEMNUM = 'Z95-04-BHH811550'
AND STORELOC ='04'
AND TRANSDATE >'01-JAN-19'
ORDER BY TRANSDATE DESC;
这是我的结果
我需要运行Balance_In_Condition_02,我在图像中单独编写了该代码。基本上,我需要创建从CONDITIONCODE 01发出的物品的库存报告,而CONDITIONCODE 02中存在相同的物品。物品经常是ISSUE和RETURN。希望你能理解我的问题
答案 0 :(得分:0)
有条件地第一笔求和数量,仅适用于带有conditioncode = '02'
的行,就像在内部查询中一样。然后使用解析lead()
填充其余行的值。
select itemnum, storeloc, transdate, quantity, conditioncode,
nvl(bal02, lead(bal02) ignore nulls
over (partition by itemnum order by transdate desc)) balance02
from (
select itemnum, storeloc, transdate, quantity, conditioncode,
case conditioncode when '02' then sum(quantity)
over (partition by itemnum order by transdate desc) end bal02
from matusetrans mtu
where itemnum = 'Z95-04-B806073A' and storeloc = '04')
order by transdate desc;
我不确定您是对所有数量求和还是仅对02
行求和,因为在您的示例中,这些总和是相等的。在第二种情况下,请不要使用sum(quantity)
:
sum(case conditioncode when '02' then quantity end) over (...