Update mit bezug auf Kundennummer / SQL Abfragegestaltung

Brechreiz1985

Grünschnabel
Ich bin noch nicht so firm in SQl, daher kann mir vielleicht jemand folgende Abfrage "beschreiben":

Aus Tabelle1 sollen Daten gezogen werden


Tabelle1 : Kudennummer, Betrag, ...

Dabei sollen immer die Summe der Beträge eines Kunden gesammelt werden, also "Select Sum(Betrag)" where Kundennummer .... das ist mir klar.

nur sollen diese SummenWerte wieder in eine andere Tabelle geschrieben werden.

Tabelle2: Kudennummer, Sum_Betrag

Das wollte ich per Update machen.


Update Tabelle 2

Set Sum_Betrag = (Select Sum(Betrag) from Tabelle 1..... )


Wie erreichen ich es jetzt, das er das sozusagen alle Zeilen von Tabelle 1 durchforstet bzw das Update für alle in Tabelle 1 gefundenen Kundennummern macht?

Und wie mache ich es wenn die Kudennummer in Tabelle 2 nicht gleich ist, sondern statt" 2400" "1002400", also immer um 100000 größer ist?

Vielleicht hat ja jemand von euch den Denkanstoß für mich.

Achso, ist ein SQL Server 2000.

Danke
Stefan
 
Hi,

vielleicht hilft Dir das hier? Weiß aber nicht, ob das mit SQL-Server funktioniert :confused:

SQL:
for row in (select sum(betrag) as betrag, kundennummer from tabelle1 group by kundennummer) loop
  update tabelle2 set
    betrag = row.betrag
  where
    kundennummer = ( 100000 + row.kundennummer);
end loop;
Achtung: nicht getestet, die Richtung sollte aber stimmen...
 
hallo,

ich gehe mal davon aus, daß kundennummer auf tabelle2 der eindeutige schlüssel ist.

das folgende einfache sql sollte es tun. du musst nur eine referenz von der
tabelle2 (kundennummer) zu tabelle1 (kundennummer) durchführen.

update tabelle2
set betrag = (
select sum(tabelle1.betrag)
from tabelle1
where tabelle1.kundennummer = tabelle2.kundennummer - 100000
);
 
hallo,

ich gehe mal davon aus, daß kundennummer auf tabelle2 der eindeutige schlüssel ist.

das folgende einfache sql sollte es tun. du musst nur eine referenz von der
tabelle2 (kundennummer) zu tabelle1 (kundennummer) durchführen.

update tabelle2
set betrag = (
select sum(tabelle1.betrag)
from tabelle1
where tabelle1.kundennummer = tabelle2.kundennummer - 100000
);

Genau die Lösung passt. ( und entspricht auch dem, worauf ich gestern selbst gekommen bin. ;-) )

Ob die andere Lösung funktioniert, habe ich nicht getestet.

Danke für die Hilfe.
 
Zurück