【发布时间】:2023-04-01 23:15:01
【问题描述】:
我正在尝试确定查询表并获取特定组的总和为负的任何行的逻辑/语法。例如:
ID | Month | Amt Due
------ | ------ | ------
1 | Jan | 15
------ | ------ | ------
1 | Jan | -20
------ | ------ | ------
1 | Mar | 3
------ | ------ | ------
2 | Aug | 13
------ | ------ | ------
2 | Dec | 40
------ | ------ | ------
2 | Dec | -25
------ | ------ | ------
基本上,查询会看到有两个 ID 具有多个同一月份:
- ID1,一月
- ID2,十二月
然后它会取 amt due 列的总和:
- 一月 (-5)
- 十二月 (15)
由于我只想要底片,所以最终结果是:
ID | Month | SUM(Amt Due)
------ | ------ | ------
1 | Jan | -5
------ | ------ | ------
这用于识别任何一个月的总和为负的 ID,因为系统永远不会生成负的 amt_due 总和。
【问题讨论】:
-
如果组中只有一条记录为负数,是否也应该返回该行?
-
是的,如果有任何月份的总和为负数,则应返回。
-
您是否需要生成摘要行(就像您在帖子中显示的那样),或者查看此类
ID, Month组合的各个行是否会有所帮助?如果您只需要摘要,vkp 已经给您答案了。查看组成这些组合的各个行也相对容易 - 使用分析函数而不是聚合。
标签: sql plsql oracle11g group-by sum