sql—基于第二列将两行值相加和相减

lrpiutwd  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(506)

总工作类型900平面500汽车780自行车100变体
我有这样的数据设置,我想返回的数据,但加上100从变异的汽车工作类型给我600辆车,减去变异100从飞机给我800个飞机,所以输出将是
总工作类型800平面600汽车780自行车100变体

gt0wga4j

gt0wga4j1#

可以使用窗口函数:

select worktype,
       (case when worktype = 'cars'
             then total + sum(case when worktype = 'variation' then total else 0 end) over ()
             when worktype = 'planes'
             then total - sum(case when worktype = 'variation' then total else 0 end) over ()
             else total
        end) as total
from t;

如果只有一排 'variation' ,也可以使用 join :

select t.worktype,
       (case when t.worktype = 'cars'
             then t.total + tv.total
             when t.worktype = 'planes'
             then t.total - tv.total 
             else t.total
        end) as total
from t join
     t tv
     on tv.worktype = 'variation'
ajsxfq5m

ajsxfq5m2#

不用看你的问题,我可以给你一个提示。
你喜欢:

SELECT (PLANES - VARIATION) AS PLANES,
    (CARS + VARIATION) AS CARS,
    BIKES,
    VARIATION
FROM (<YOUR MEGA QUERY WHICH MUST TO HAS [PLANES, CARS, BIKES, VARIATION]>)

也许您可以将其放入查询而不嵌套,但我看不到任何内容,我更希望在答案中确保。

相关问题