SQL Update Script über zwei Datensätze

zombie03

Neuer Benutzer
Beiträge
3
Moin zusammen,
Ich bin gezwungenenerweise zu einer SQL Datenbank gekommen. Die Software die mit dieser Datenbank arbeitet macht leider nicht ganz was sie soll, daher möchte ich Daten per Sql-sript ändern.
die Tabelle Preise hat folgenden Aufbau mit Beispieldatten:
IDPIDArtNrPreisGebPreisEZPrNr
1231123453,950,51
1241123452,780,452
1251985214,790,61
1261985213,580,492


Ich würde nun gerne den PreisGeb und PreisEZ aus dem ersten Datensatz in den 2. datensatz übertragen jeweilsgeteielt durch 1,19.
leider habe ich keine Ahnung wie ich das anstellen soll. Einfache Sql Scrips habe ich dank Google bisher immer zu meiner zufriedenheit hinbekommen
hat jemand einen konstruktiven Lösungsvorschlag?

vielen Dank im vorraus
 
Werbung:
Code:
postgres=# select * from zombie03 ;
  art  | geb  |  ez  | prnr 
-------+------+------+------
 12345 | 3.95 |  0.5 |    1
 12345 | 2.78 | 0.45 |    2
 98521 | 4.79 |  0.6 |    1
 98521 | 3.58 | 0.49 |    2
(4 rows)
postgres=# begin;
BEGIN
postgres=*# update zombie03 set geb = z1.geb / 1.19, ez = z1.ez / 1.19 from (select * from zombie03 where prnr=1) z1 where zombie03.art=z1.art and zombie03.prnr = 2;
UPDATE 2
postgres=*# select * from zombie03 ;
  art  |        geb         |           ez           | prnr 
-------+--------------------+------------------------+------
 12345 |               3.95 |                    0.5 |    1
 98521 |               4.79 |                    0.6 |    1
 12345 | 3.3193277310924370 | 0.42016806722689075630 |    2
 98521 | 4.0252100840336134 | 0.50420168067226890756 |    2
(4 rows)

postgres=*#

So? Falls ja, COMMIT nicht vergessen ;-)
 
Vielen Dank für die schnelle Antwort.
Vielleicht hätte hätte ich dazuschreiben sollen ich arbeite mit SSMS18 . Funktioniert das dort auch? Oder womit muss ich das machen?
 
Code:
UPDATE tabelle
SET tabelle.PreisGeb = t.PreisGeb / 1.19,
tabelle.PreisEZ = t.PreisEZ / 1.19
FROM tabelle
INNER JOIN tabelle t
ON tabelle.ID = t.ID
AND tabelle.PID = t.PID
AND tabelle.ArtNr = t.ArtNr
AND t.PrNr = 2
WHERE tabelle.PrNr = 1
sollte gehen. Du musst dich aber eventuell auf Rundungsdifferenzen gefasst machen, wenn das Abrechnungsrelevant ist sollte man sich da noch ein bisschen Mühe geben.
 
Werbung:
Vielen Dank für die Hilfe
ein wenig mußte ich noch abändern da die ID für jede zeile anders ist habe ich es rausgenommen und unten PRNNr 1 und 2 getauscht nun läuft es wie es soll

SQL:
UPDATE tabelle
SET tabelle.PreisGeb = t.PreisGeb / 1.19,
    tabelle.PreisEZ = t.PreisEZ / 1.19
FROM tabelle
INNER JOIN tabelle t
ON tabelle.PID = t.PID
AND tabelle.ArtNr = t.ArtNr
AND t.PrNr = 1
WHERE tabelle.PID= WERT tabelle.PrNr = 2
 
Zurück
Oben