sql - 甲骨文 SQL : SUM in first row with condition

我正在努力在查询中获得以下结果

这是我的 table

行号 Line_typ 成本 1000 6 0 2000 7 5000 3000 7 3000 4000 7 2000 5000 6 0 6000 9 3000 7000 7 2000 8000 1 2000 表>

我想要的结果是这个

行号 Line_typ 费用 1000 6 10000 (0+5000+3000+2000) 5000 6 5000 (0+3000+2000) 8000 1 2000 表>

基本上只显示 (6,1) 中具有 line_typ 的行,但将其间所有其他行的列成本相加。

感谢您的想法和帮助!!

伊凡

最佳答案

Tim Biegeleisen 的答案非常好,但需要一些中间产品和 oracle 功能的原因,可以在使用最少的 SQL 时看到:

  • 选择(1, 6)中的line_typ,按line_num排序。
  • 对具有较大 line_num n 的表进行第二次运行的成本求和,但是
  • 其中(第三次运行)n 之前的 (1, 6) 中没有 line_typ。

基本复杂度 O(N³),索引略少。

所以:

select h.line_num, h.line_typ,
 (select sum(cost)
  from tbl g
  where g.line_num >= h.line_num
  and not exists (select *
                  from tbl
                  where line_num > h.line_num
                  and line_typ in (1, 6)
                  and line_num <= g.line_num)
 ) as cost
from tbl h
where h.line_typ in (1, 6)
order by h.line_num

(为非 Oracle 搜索者提供。)

这是一个工作 demo 的链接.

https://stackoverflow.com/questions/73076078/

相关文章:

c# - 处理没有并发的任务列表

android - 在 Android OpenGL ES 上只能看到没有几何图形的 glClear

javascript - 如何返回 array.reduce 中的对象?

c++ - 优化静态字符串的字符串存储

regex - 如果使用 linux 命令行工具在文本文件的下一行中满足条件,则替换换行符

java - Maven:如何查找依赖项

python - Pandas : Concat rows of a dataframe with

python - 如果我更改了类中的函数名称,该函数会发生什么变化?

c++ - 如何使这个递归函数更快? (四叉树)

c++ - 尽管类型删除,是否可以使用静态多态性(模板)?