首页 文章

oracle许多行的总和 - 单行的值

提问于
浏览
0

我试图在oracle中做一些数学运算,让我返回多行的总和,减去同一个表中不同列中的1行值 . 这可能吗?

例如,

select table(column1) - (从table1中选择column2,其中month = to_date(201505,'yyyymm'))来自table1,其中month> = to_date(201006,'yyyymm');

2 回答

  • 0

    这是可能的,但您需要与子查询交叉连接 .

    select
        s.sum1 - t.column2
    from (select sum(column1) as sum1 from table1 where month >= to_date('201006','yyyymm') ) s
    cross join (select column2 from table1 where month = to_date('201505','yyyymm')) t
    
  • 2

    相信它是可能的 . 鉴于您可以识别具有要减去的值的另一列的行,您可以将aggregate 'sum''case' statement结合使用 .

    如果条件匹配,则从第一列中减去相关的第二列,否则不减去并使用第一列中的原始值作为'sum'函数 .

    它看起来像这样:

    select 
    sum( 
        case (when <condition-normal>) then 
            column_one 
        else 
            column_two - column_one 
            )
    ) from table;
    

    PS:一定要针对不同的数据集进行测试!

相关问题