问题描述
我希望我能在这里得到一些帮助,因为我想不出别的了。
所以我有 2 个结果来自同一个表,我想在一个查询中看到这些结果……所以我使用了 UNION,直到那里都很好,现在我需要这两个结果之间的差异。假设我有下一个结果:
measure 30_days
old_purchases 342
new_purchases 54
measure 30_days
old_purchases 342
new_purchases 54
difference 288
解决方法
您可以使用条件聚合:
select measure,value
from t
union all
select 'difference',sum(case when measure = 'old_purchases' then value
when measure = 'new_purchases' then - value
else 0
end)
from t;
如果您确实想将其添加到表中,请使用 insert
:
insert into t (measure,value)
select 'difference',sum(case when measure = 'old_purchases' then value
when measure = 'new_purchases' then - value
else 0
end)
from t;