select distinct und order by

hallo forum,

Heute habe ich eine Frage zu einer aggregation in einer SQL-Abfrage. ich hoffe jemand kann mir helfen? Ich habe folgende Abfrage:

SELECT
spezies.id_spezies,
akzessionen.id_akzession,
string_agg(distinct bluetezeiten.monat, ‘;’ order by bluetezeiten.id_bluetezeit) AS bluetezeit
FROM akzessionen
INNER JOIN spezies ON (akzessionen.id_spezies = spezies.id_spezies)
LEFT OUTER JOIN verkn_lebensbereiche_spezies ON (verkn_lebensbereiche_spezies.id_spezies = spezies.id_spezies)
LEFT OUTER JOIN verkn_bluetezeiten_spezies ON (verkn_bluetezeiten_spezies.id_spezies = spezies.id_spezies)
LEFT OUTER JOIN bluetezeiten ON (verkn_bluetezeiten_spezies.id_bluetezeit = bluetezeiten.id_bluetezeit)
GROUP BY
akzessionen.id_akzession,
spezies.id_spezies

In der string_agg Funktion möchte ich Monate in einer Zeile hintereinander anzeigen getrennt durch ein Semikolon. Das funktioniert auch soweit ganz gut. Jetzt werden allerdings die Monate immer pro Spezies angezeigt. ich habe also doppelte Werte. Diese kann ich dann durch das distinct ausschliessen. Bis dahin funktioniert das auch noch gut. Jetzt werden allerdings die Monate immer alphabethisch angezeigt. Also August vor Januar usw. Das habe ich jetzt versucht durch das order by zu Lösen, aber leider geht das nicht. Es kommt immer die Fehlermeldung: " in einer Aggregatfunktion mit DISTINCT müssen ORDER-BY-Ausdrücke in der Argumentliste erscheinen". Leider weiss ich jetzt nicht was das bedeutet. Kann mir eventuell jemand helfen und mir einen Tipp geben wie ich die Monate ohne doppelte Werte und sortiert nach der id der monate ausgeben kann?

Vielen herzlichen Dank
hanno

Vereinafch hast Du und suchst:

test=*# select * from monate ;
 id |  monat
----+---------
  1 | januar
  2 | februar
  3 | märz
  4 | april
  3 | märz
  5 | mai
  5 | mai
  6 | juni
(8 rows)

Time: 0,123 ms
test=*# select string_agg(monat,', ' order by id) from (select distinct id, monat from monate) foo ;
               string_agg
-----------------------------------------
 januar, februar, märz, april, mai, juni
(1 row)