首页 > 解决方案 > SQL查询从3个不同的行计算一个值

问题描述

col1       col2       cal_val

F          1879       1879
%          25         1409
$          -45        1454

第一行基本上输出第 2 列中的条目第二行基本上会计算第 1 行第 3 列中值的 25%,然后从前一个值中减去该值,即 1879-470 = 1409

我需要能够计算 1454 的最终值(基本上是从第二行输出值中减去)1409 - (-45) 等于 1454

标签: sql

解决方案


您可以使用条件聚合:

select ( (sum(case when col1 = 'F' then col2 end) *
          sum(case when col1 = '%' then 1 - col2 / 100.0 end)
         ) -
         sum(case when col1 = '$' then col2 end)
       )
from t;

是一个 db<>fiddle。


推荐阅读