这是我之前的问题的后续。我只是觉得如果我再次解释这一切会更容易,因为我想尝试从我的查询中获取更多细节。所以我们开始:
示例表:(注意:该表有 100 个 ID,每个 ID 都有许多不同的 LOTNO)
ITEMNO LOTNO TRANS_QUAN TRANS_TYPE
1 45 16 PO
1 3 2 PO
1 45 47 MH
1 45 3 MH
1 3 8 MH
到目前为止,我没有考虑每个 ID 的不同 LotNo,而是根据 ID 和 TYPE 求和。下面的代码汇总了 ID = 1 的 TYPE = 'PO' 的所有数量值。然后将它们与 ID = 1 的 TYPE = 'MANUAL/BACKFLUSH' 的所有总数量值进行比较。此代码在这方面非常有效(非常感谢给尼古拉斯克拉斯诺夫这个):
SELECT *
FROM (SELECT TR.ITEMNO
, ROUND(SUM(TR.TRANS_QUAN * (DECODE(TR.TRANS_TYPE, 'PO', 1, 0)))) AS SUM_IN
, ROUND(SUM(TR.TRANS_QUAN * (DECODE(TR.TRANS_TYPE, 'MANUAL/BACKFLUSH', 1,0))))AS SUM_OUT
FROM IQMS.TRANSLOG TR
GROUP BY IQMS.TR.ITEMNO
ORDER BY IQMS.TR.ITEMNO)
WHERE SUM_OUT > SUM_IN
我想进一步分解总和计算并合并 LOTNO 字段。所以在上表中,对于 ID = 1,我想对 ID = 1、LotNo = 45 和 TYPE = PO 的所有值求和,然后将它们与 ID = 1、LotNo = 45 和 TYPE = 'MANUAL\BACKFLUSH' 进行比较。
然后我想继续比较 (ID = 1, LOTNO = 3, TYPE = 'PO') 与 (ID = 1, LOTNO = 3, TYPE ='MANUAL/BACKFLUSH') 等等。
我也只想返回 SUM_OUT > SUM_IN 的记录
我希望我的输出是这样的
ID LOTNO SUM_IN SUM_OUT
1 45 30 50
1 3 2 8
关于如何将其合并以提供更具体的结果集的任何想法?可能是一些简单的东西,比如额外的 GROUP BY 什么的?我希望我已经清楚我希望实现的目标。
感谢小伙伴们一直以来的支持!:)