对不起标题。可能有点混乱!我正在使用的示例表如下所示:
ID Quantity Type
-----------------------------------------------
1 14 PO
1 2 PO
1 4 MH
1 3 MH
1 2 MH
2 16 PO
2 12 MH
2 9 MH
这就是我想做的。我想将 ID = 1 和 Type = PO (14 + 2) 的所有数量相加为 SUM_IN。然后,我想将 ID = 1 和 Type = MH (4 + 3 + 2) 的所有数量相加为 SUM_OUT。完成此操作后,我想比较两者并仅在 SUM_OUT > SUM_IN 处返回值。所以对于 ID = 1 不会像 ID = 2 那样返回,因为 (12 + 9) > 16。
有没有办法在 SQL 中做到这一点,或者我需要使用 PL/SQL 和变量来完成任务。我在 PL/SQL 方面的经验很少,但从逻辑上讲,变量似乎是解决问题的最简单方法。我知道选择语句可以存储在变量中,但我不确定如何存储。无论如何,这是我的两个 SQL 选择
SELECT SUM(QUANTITY) AS SUM_IN
FROM TRANSLOG
WHERE TYPE IN ('PO')
AND ID = '1'
SELECT SUM(QUANTITY) AS SUM_OUT
FROM TRANSLOG
WHERE TYPE IN ('MH')
AND ID = '1'
因此,如果我可以将这两个都设置为变量,那么任务应该不会太难,对吧???
在此先感谢您的帮助。