zeilenübergreifende Einträge zusammenfassen

Hi,

ich habe ein kleines Problem.

Ich habe in der Datenbank meines Vorgängers folgende Einträge:

TABELLE1

ID hgnc hprd imgt_gene locusid mim rgd
1 5 (null) (null) (null) (null) (null)
1 (null) 00726 (null) (null) (null) (null)
1 (null) (null) (null) (null) 138670 (null)
2 7 (null) (null) (null) (null) (null)
2 (null) 00072 (null) (null) (null) (null)
2 (null) (null) (null) (null) 103950 (null)
3 8 (null) (null) (null) (null) (null)
8 11 (null) (null) (null) (null) (null)
8 (null) (null) (null) (null) 108985 (null)
9 7645 (null) (null) (null) (null) (null)
9 (null) 00149 (null) (null) (null) (null)
9 (null) (null) (null) (null) 108345 (null)
10 7646 (null) (null) (null) (null) (null)
10 (null) 02000 (null) (null) (null) (null)
10 (null) (null) (null) (null) 243400 (null)
11 15 (null) (null) (null) (null) (null)
12 16 (null) (null) (null) (null) (null)
12 (null) 00120 (null) (null) (null) (null)
12 (null) (null) (null) (null) 107280 (null)

ich würde gerne einen neue Tabelle erzeugen in dem diese Einträge in einer Zeile zusammengefasst sind:

Für die Spalten mit der ID 1 und 2 sollte dann der Eintrag folgendermaßen aussehen:

ID hgnc hprd imgt_gene locusid mim rgd
1 5 00723 (null) (null) 138670 (null)
2 7 00072 (null) (null) 103950 (null)

Wie müsste denn das SELECT statement aussehen?

Danke!!

Ich hoffe, Dein Problem richtig verstanden zu haben:

test=*# select * from foo;
id | a | b | c
----±–±–±–
1 | 1 | |
1 | | 2 |
1 | | | 3
2 | | | 3
(4 rows)

test=*# select id, max(a), max(b), max(c) from foo group by id order by 1;
id | max | max | max
----±----±----±----
1 | 1 | 2 | 3
2 | | | 3
(2 rows)

vielen dank :slight_smile:

das Problem ist damit gelöst