INSERT INTO & SELECT

Hallo Community,

ich würde gerne Daten aus einer bestehenden Tabelle in einer anderen Tabelle unter folgende Bedingungen migrieren:

  • das letzte Jahr, wo ein Umsatz vorhanden ist und der Firmenname und
  • das letzte Jahr, wo ein Gewinn vorhanden ist und der Firmenname

Beispiel:

Ist-Tabelle konzernabschluss

firma, jahr, umsatz, gewinn
A, 2012, 2 Mio, 1 Mio
A, 2013, 1 Mio, 500 k
B, 2011, 1 Mio, 500 k


SOLL-Tabelle konzernabschluss_aktuell

firma, jahr, umsatz, gewinn
A, 2013, 1 Mio, 500 k
B, 2011, 1 Mio, 500 k

ich habe bisher mit folgenden Befehl gearbeitet

INSERT INTO konzernabschluss_aktuell (firma, jahr, umsatz, gewinn)
SELECT firma, jahr, umsatz, gewinn FROM konzernabschluss;

Es muss sicherlich mit der Funktion Max() gearbeitet werden. Ich weiss leider nicht ganz genau wie. Ich hoffe jemand kann mir da weiterhelfen. Bin leider noch ein Anfänger.

test=*# select * from konzern ;
 firma | jahr | umsatz  | gewinn  
-------+------+---------+---------
 A     | 2012 | 2000000 | 1000000
 A     | 2013 | 1000000 |  500000
 B     | 2011 | 1000000 |  500000
(3 Zeilen)

test=*# select * from konzern where (firma, jahr) in (select firma, max(jahr) from konzern where umsatz > 0 group by firma);
 firma | jahr | umsatz  | gewinn 
-------+------+---------+--------
 A     | 2013 | 1000000 | 500000
 B     | 2011 | 1000000 | 500000
(2 Zeilen)

test=*#

Das INSERT überlasse ich Dir zur Übung.