sql数学查询不能给出很好的连接结果

0pizxfdo  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(284)

我有两张table。

TABLE1
 ID_table1  EAN  type       REGION    CATEGORY FROM_DATE     TO_DATE  CONSUMPTION
    1      12312   A         WEST      11    2020-01-01  2020-02-02    13213
    2      12412   A         EAST      11    2020-01-01  9999-12-31    10000
    3      12327   A         EAST      21    2019-01-01  2022-01-01    2000
    4      12391   B         EAST      21    2020-01-01  2020-12-31    1000

 TABLE2
 ID_table2  DATE   HOUR   TYPE_B_COEFFICIENT TYPE_A_WEST_COEFFICIENT TYPE_A_EAST_COEFFICIENT cat_11_coe cat_21_coe

 1      2020-01-01  1       0.00521212          0.0123123           0.0202323                 1.23212    0.728290
 2      2020-01-01  2       0.00931212          0.0192323           0.0738292                 1.32012    0.929729
 3      2020-01-02  1       0.00529322          0.0023283           0.0329292                 1.99212    0.932111

我需要结果

EAN      DATE      HOUR     CONSUMPTION
12312   2020-01-01    1       200,444263207188
.......

计算如下=若ean为a类和西部地区,类别11为=132130.01231231.23212=200444263207188,结果为一天中的小时消耗量。
产量消耗量由表2的两个系数和表1的消耗量相乘计算得出。表1中有许多按类型和区域计算的变量。在结果视图中,我需要在表1中显示所有ean除以天和小时,以及所有小时的消耗量
如果我使用的查询没有类别系数都很好,但与类别系数给出了坏结果。
这里是没有类别系数的dbfiddle工作sql,这里是带有类别系数的坏计数查询。

6tdlim6h

6tdlim6h1#

这是你想要的吗?

select t1.ean, t2.date, t2.hour,
       (t1.consumption *
        (case when type = 'B' then type_b_coefficient
              when type = 'A' and region = 'EAST' then type_a_east_coefficient
              when type = 'A' and region = 'WEST' then type_a_west_coefficient
              else 1
         end) *
        (case when category = 11 then cat_11_coefficient
              when category = 21 then cat_21_coefficient
              else 1
         end)
       ) as net_consumption
from table1 t1 join
     table2 t2
     on t2.date = t1.from_date

相关问题