gpt4 book ai didi

SQL:对一列中的某些项目求和并从该列中的另一个数字中减去它

转载 作者:搜寻专家 更新时间:2023-10-30 22:01:21 25 4
gpt4 key购买 nike

对不起标题。可能有点困惑!我正在使用的示例表如下所示:

     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 方面的经验很少,但从逻辑上讲,变量似乎是解决问题的最简单方法。我知道 select 语句可以存储在变量中,但我不确定如何存储。无论如何,这是我的两个 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'

所以如果我可以将它们都设置为变量,任务应该不会太困难,对吧???

在此先感谢您的帮助。

最佳答案

select ID, 
sum ( Quantity * case Type when 'po' then 1 else 0 end ) as SUM_IN,
sum ( Quantity * case Type when 'mh' then 1 else 0 end ) as SUM_OUT
from translog
group by ID
having sum ( Quantity * case Type when 'po' then 1 else -1 end ) < 0

关于SQL:对一列中的某些项目求和并从该列中的另一个数字中减去它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com