DB2求两个结果集差别的SQL
DB2求两个结果集差异的SQL
TB1:
PROJ K1 K2 K3 K4
项目1 10 15 17 20
项目2 10 20 17 20
项目3 10 28 17 20
TB2:
PROJ K1 K2 K3 K4
项目1 10 15 18 20
项目2 9 20 17 20
项目3 10 28 17 20
项目4 10 50 17 20
需得到结果:
PROJ K1 K2 K3 K4
项目1 -1
项目2 1
项目4 -10 -50 -17 -20
结果是对比计算得到两个结果集指标(K1、K2……指标有几十个)差异值。
因指标太多,用JOIN然后逐个指标减法感觉太不灵活,求高级轻巧一点的解决办法。
------解决方案--------------------
如果你的意思是k1----kn变化不确定列数,那么可以用存储过程,去syscat.columns中查询需要表的列信息,然后用来拼出sql文,但是其实也是用join,只不过避免了手动去写kn-kn这样
------解决方案--------------------
select
PROJ,sum(K1),sum(K2),sum(K3),sum(K4)
from (
select PROJ, K1, K2, K3, K4 from TB1
union all
select PROJ, -K1, -K2, -K3, -K4 from TB2
)
group by PROJ
having sum(K1)<>0 or sum(K2)<>0 or sum(K3)<>0 or sum(K4)<>0
with ur
TB1:
PROJ K1 K2 K3 K4
项目1 10 15 17 20
项目2 10 20 17 20
项目3 10 28 17 20
TB2:
PROJ K1 K2 K3 K4
项目1 10 15 18 20
项目2 9 20 17 20
项目3 10 28 17 20
项目4 10 50 17 20
需得到结果:
PROJ K1 K2 K3 K4
项目1 -1
项目2 1
项目4 -10 -50 -17 -20
结果是对比计算得到两个结果集指标(K1、K2……指标有几十个)差异值。
因指标太多,用JOIN然后逐个指标减法感觉太不灵活,求高级轻巧一点的解决办法。
SQL DB2 结果差异
DB2
SQL
求差异
------解决方案--------------------
如果你的意思是k1----kn变化不确定列数,那么可以用存储过程,去syscat.columns中查询需要表的列信息,然后用来拼出sql文,但是其实也是用join,只不过避免了手动去写kn-kn这样
------解决方案--------------------
select
PROJ,sum(K1),sum(K2),sum(K3),sum(K4)
from (
select PROJ, K1, K2, K3, K4 from TB1
union all
select PROJ, -K1, -K2, -K3, -K4 from TB2
)
group by PROJ
having sum(K1)<>0 or sum(K2)<>0 or sum(K3)<>0 or sum(K4)<>0
with ur