0

我需要从 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);

这是我的atm声明:

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

有人能帮我吗?

4

2 回答 2

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'
于 2013-07-29T11:42:08.120 回答
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
于 2013-07-29T12:03:01.787 回答