Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带子查询的SQL数学方程_Sql_Db2_Subquery_Addition - Fatal编程技术网

带子查询的SQL数学方程

带子查询的SQL数学方程,sql,db2,subquery,addition,Sql,Db2,Subquery,Addition,我坐在DB2服务器上,试图计算KPI卡。这是一个相当简单的方程式 本年度收入+本年度剩余预算/总预算 但每当我开始除法,结果是1。我忽略了什么?我尝试过不同的方法。下面的人有我最大的希望:-D select ((x.Rev+ y.Budget) / t.Budget) from ( select sum(oms) as Rev from vislib.faktura Where Origin = 'MOVEX' AND yy = 2021

我坐在DB2服务器上,试图计算KPI卡。这是一个相当简单的方程式

本年度收入+本年度剩余预算/总预算

但每当我开始除法,结果是1。我忽略了什么?我尝试过不同的方法。下面的人有我最大的希望:-D

select ((x.Rev+ y.Budget) / t.Budget)
from
(
        select sum(oms) as Rev from vislib.faktura
        Where Origin = 'MOVEX'
        AND yy = 2021
        AND SMCD = '2294'
        AND IVNO <> 0
) x
join
(
       select sum(TASTBUDOMS) as Budget  from vislib.faktura
        where ORIGIN = 'TASTBUD'
        AND yy = 2021
        AND MM > 3
        AND SMCD = '2294'
) y on 1=1
join
(
       select sum(TASTBUDOMS) as Budget from vislib.faktura
        where ORIGIN = 'TASTBUD'
        AND yy = 2021
        AND SMCD = '2294'
) t on 1=1

使用条件聚合获取所需的值:

select sum(case when Origin = 'MOVEX' and ivno <> 0 then oms end) as Rev,
       sum(case when Origin = 'TASTBUD' and mm > 3 then TASTBUDOMS end) as budget,
       sum(case when Origin = 'TASTBUD' then TASTBUDOMS end) as budget2      
from vislib.faktura
Where yy = 2021 and
      SMCD = '2294'
然后,您可以将这些功能组合起来:

select ( (sum(case when Origin = 'MOVEX' and ivno <> 0 then oms end) +
          sum(case when Origin = 'TASTBUD' and mm > 3 then TASTBUDOMS end)
         ) /
         sum(case when Origin = 'TASTBUD' then TASTBUDOMS end)
       ) as ratio      
from vislib.faktura
Where yy = 2021 and
      SMCD = '2294'

整数除法?试着在除法之前乘以1.0。但这会得到3个结果吗?我以为那就是我在做的。条件聚合。我能举个简单的例子,来了解我的出发点吗?@MikeSeisbye。这将返回三列。这是一个条件聚合的示例。抱歉。。我还是不明白我要怎么结束这一切?我只想要一个结果。不是三个。那么,如何让结果变成rev+bud/Bud2呢?@MikeSeisbye。把表达式分开。