【问题标题】:Sum whole column plus a single row of another column and display in a third column将整列加上另一列的单行相加并显示在第三列中
【发布时间】:2020-10-13 17:42:29
【问题描述】:

这是我的问题,我确实有一个查询返回给我这个表

select * from basic_table;
|----network----|--- previa ----|--- month---|--- organic_value----|---financial_value-----|
 Rental                  1              1          1000                  1250                 
 Rental                  1              3          3750                  3750
 Service                 2              1           2000                 2200
 Maintance               1              2           350                   500

我需要的是总结 previa 相同的所有有机价值 + 每个月的财务价值

所以决赛桌是

|----network----|--- previa ----|--- month---|--- organic_value----|---financial_value-----| ---NEW_COLUMN--|
 Rental                  1              1          1000                  1250                 (1k + 3,75+0,35k) = 5100 + 1,25k = 6350
 Rental                  1              3          3750                  3750                 (5100) + 3,75k = 8850
 Service                 2              1           2000                 2200                  2000 + 2200 = 4200
 Maintance               1              2           350                   500                  (5100 + 500) =5600

任何提示如何解决这个问题?

【问题讨论】:

  • 我不遵循逻辑。 5100哪里来的?它有两次。
  • @GordonLinoff:据我所知,这是organic_valueprevia = 1 的总和。
  • 新列您应该将特定 previa 的所有有机价值(这就是为什么 5100)加上该行的财务价值相加。例如。第 4 行 previa 为 1,因此 previa 的有机价值总和 1 => 5100 + 该行的财务价值 (500) ,最终结果为 5600

标签: sql oracle plsql sum window-functions


【解决方案1】:

这是一个窗口总和:

select t.*, 
    financial_value  + sum(organic_value) over(partition by previa) as new_column
from mytable t

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多