我试图在oracle中做一些数学运算,让我返回多行的总和,减去同一个表中不同列中的1行值 . 这可能吗?
例如,
select table(column1) - (从table1中选择column2,其中month = to_date(201505,'yyyymm'))来自table1,其中month> = to_date(201006,'yyyymm');
这是可能的,但您需要与子查询交叉连接 .
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
相信它是可能的 . 鉴于您可以识别具有要减去的值的另一列的行,您可以将aggregate 'sum'与'case' statement结合使用 .
如果条件匹配,则从第一列中减去相关的第二列,否则不减去并使用第一列中的原始值作为'sum'函数 .
它看起来像这样:
select sum( case (when <condition-normal>) then column_one else column_two - column_one ) ) from table;
PS:一定要针对不同的数据集进行测试!
2 回答
这是可能的,但您需要与子查询交叉连接 .
相信它是可能的 . 鉴于您可以识别具有要减去的值的另一列的行,您可以将aggregate 'sum'与'case' statement结合使用 .
如果条件匹配,则从第一列中减去相关的第二列,否则不减去并使用第一列中的原始值作为'sum'函数 .
它看起来像这样:
PS:一定要针对不同的数据集进行测试!