我需要从tabBuchung中获取所有“dblSoll”值的总和以及来自tabBuchungx的所有“dblSoll”值的总和......
这是我的定义:
CREATE TABLE tabBuchung
(strKto char(50),
dblSoll int(50),
dblHaben int(50));
CREATE TABLE tabKonten
(strKtoNr char(50),
strKtoBez char(50),
strKtoTyp char(50));
CREATE TABLE tabBuchungx
(strKto char(50),
dblSoll int(50),
dblHaben int(50));
insert into tabBuchung values ("1500", 50,0);
insert into tabBuchung values ("1600", 70,0);
insert into tabBuchung values ("1600", 130,0);
insert into tabBuchung values ("1700", 0, 800);
insert into tabBuchung values ("1800", 30, 22);
insert into tabBuchung values ("2000", 100, 0);
insert into tabBuchung values ("2000", 140, 0);
insert into tabBuchungx values ("1500", 0, 80);
insert into tabBuchungx values ("1600", 220, 0);
insert into tabBuchungx values ("1600", 80, 0);
insert into tabBuchungx values ("1700", 0, 44);
insert into tabBuchungx values ("1800", 10, 15);
insert into tabBuchungx values ("1900", 30, 0);
insert into tabBuchungx values ("1900", 10, 0);
select tabBuchung.strKto, sum(tabBuchung.dblSoll) as newSaldo, sum(tabBuchungx.dblSoll) as oldSaldo
from tabBuchung
join tabBuchungx on tabBuchung.strKto = tabBuchungx.strKto
where tabBuchung.strKto = '1600'
group by tabBuchung.strKto, tabBuchung.dblSoll, tabBuchungx.dblSoll
strkto newsaldo oldsaldo
1600 70 80
1600 70 220
1600 130 80
1600 130 220
strkto newsaldo oldsaldo
1600 200 300
任何人都可以帮我吗?
答案 0 :(得分:1)
尝试这种方式:
select distinct
t.strKto,
(select sum(t1.dblSoll)
from tabBuchung t1
where t1.strKto = t.strKto) as oldsaldo,
(select sum(tx.dblSoll)
from tabBuchungx tx
where tx.strKto = t.strKto) as newsaldo
from tabBuchung t
where t.strKto = '1600'
答案 1 :(得分:0)
您无法加入表格。你必须使用不同的方法。您在两个表中都有2个匹配的strkto,它们将返回这些行的所有可能组合。在你的情况下4行。这就是你如何组合它们:
select strKto, sum(newSaldo) as newSaldo, sum(oldSaldo) as oldSaldo
from
(
select strKto, dblSoll as newSaldo, 0 as oldSaldo
from tabBuchung
where strKto = '1600'
union all
select strKto, 0 as newSaldo, dblSoll as oldSaldo
from tabBuchungx
where strKto = '1600'
) a
group by strKto