Ersetzen des Wertes einer Zelle eines Datensatzes mit dem Wert einer Zelle eines anderen Datensatzes

foxx1

Neuer Benutzer
Beiträge
3
Hallo zusammen,

ich habe folgende Beispieltabelle:

ID ---------- LageSys ---------- Fachobj
722 -------- ETRS89 --------- ALKIS-TRF
722 -------- NW101 --------- HH7
722 -------- NW177 --------- HH7
841 -------- ETRS89 --------- ALKIS-TRF
841 -------- NW101 --------- VE52
841 -------- NW177 --------- VE52
. . .
. . .
. . .

Die Zeilen mit LageSys = ETRS89 und Fachobj = ALKIS-TRF sind falsch und müssten mit dem Wert der Spalte "Fachobj" bei LageSys = NW177 der zugehörigen ID ersetzt werden.

Dh. Für den Datensatz mit der ID 722 müsste ALKIS-TRF durch HH7 ersetzt werden
Für den Datensatz mit der ID 841 müsste ALKIS-TRF durch VE52 ersetzt werden.
Usw...

Ist derartiges ohne Zuhilfenahme von Java in SQL möglich? Ich bezweifle es gerade, bin allerdings auch nicht so fit auf dem Gebiet.

Im Voraus besten Dank
 
Werbung:
Code:
test=# select * from foxx1 ;
 id  | lagesys |  fachobj  
-----+---------+-----------
 722 | ETRS89  | ALKIS-TRF
 722 | NW101  | HH7
 722 | NW177  | HH7
 841 | ETRS89  | ALKIS-TRF
 841 | NW101  | VE52
 841 | NW177  | VE52
(6 rows)
test=# with richtig as (select * from foxx1 where lagesys = 'NW177') update foxx1 set fachobj = richtig.fachobj from richtig where foxx1.id=richtig.id and foxx1.fachobj='ALKIS-TRF';;
UPDATE 2
test=# select * from foxx1 ;
 id  | lagesys | fachobj
-----+---------+---------
 722 | NW101  | HH7
 722 | NW177  | HH7
 841 | NW101  | VE52
 841 | NW177  | VE52
 722 | ETRS89  | HH7
 841 | ETRS89  | VE52
(6 rows)

test=#

PostgreSQL...
 
Code:
test=# select * from foxx1 ;
id  | lagesys |  fachobj 
-----+---------+-----------
722 | ETRS89  | ALKIS-TRF
722 | NW101  | HH7
722 | NW177  | HH7
841 | ETRS89  | ALKIS-TRF
841 | NW101  | VE52
841 | NW177  | VE52
(6 rows)
test=# with richtig as (select * from foxx1 where lagesys = 'NW177') update foxx1 set fachobj = richtig.fachobj from richtig where foxx1.id=richtig.id and foxx1.fachobj='ALKIS-TRF';;
UPDATE 2
test=# select * from foxx1 ;
id  | lagesys | fachobj
-----+---------+---------
722 | NW101  | HH7
722 | NW177  | HH7
841 | NW101  | VE52
841 | NW177  | VE52
722 | ETRS89  | HH7
841 | ETRS89  | VE52
(6 rows)

test=#

PostgreSQL...


Verdammt, das ging schnell. Vielen Dank für die Antwort!
Es ist nur mit PostgreSQL möglich?
 
Werbung:
Zurück
Oben