Oracle - GROUP BY - Problem
-
Hallo,
habe folgende Table:
ZEITSTEMPEL AUFTRAGS_IDENT 1 | 2012-05-21 19:05:32 792 | 1011132_ES003_A5E03695175--B 2 | 2012-05-21 19:28:34 230 | 1011132_ES003_A5E03695175--B 3 | 2012-05-21 19:34:35 042 | 1011132_ES003_A5E03695175--B 4 | 2012-05-21 19:38:34 453 | 1011132_ES003_A5E03695175--B 5 | 2012-05-21 19:52:38 775 | 1011132_ES003_A5E03695175--T 6 | 2012-05-21 20:39:08 963 | 1004802_B_A5E00432155--B 7 | 2012-05-21 20:57:13 070 | 1004802_B_A5E00432155--T 8 | 2012-05-22 06:44:35 085 | 1010967_A_A5E03360313--T 9 | 2012-05-22 07:40:15 811 | 1002009_A_A5E00263261--T 10 | 2012-05-22 08:29:46 858 | 1008557_003_A5E00372863--B 11 | 2012-05-22 09:53:19 192 | 1008557_003_A5E00372863--T 12 | 2012-05-22 11:02:39 069 | 1010967_A_A5E03360313--B
Jetzt möchte ich die mehrfachen AUFTRAGS_IDENT raus haben, quasi nach denen gruppieren.
sodass die Table in diesem Beispiel so aussieht:
ZEITSTEMPEL AUFTRAGS_IDENT 1 | 2012-05-21 19:05:32 792 | 1011132_ES003_A5E03695175--B 2 | 2012-05-21 19:52:38 775 | 1011132_ES003_A5E03695175--T 3 | 2012-05-21 20:39:08 963 | 1004802_B_A5E00432155--B 4 | 2012-05-21 20:57:13 070 | 1004802_B_A5E00432155--T 5 | 2012-05-22 06:44:35 085 | 1010967_A_A5E03360313--T 6 | 2012-05-22 07:40:15 811 | 1002009_A_A5E00263261--T 7 | 2012-05-22 08:29:46 858 | 1008557_003_A5E00372863--B 8 | 2012-05-22 09:53:19 192 | 1008557_003_A5E00372863--T 9 | 2012-05-22 11:02:39 069 | 1010967_A_A5E03360313--B
Aber wenn ich bei oracle nur nach AUFTRAGS_IDENT gruppiere, bringt er mir einen Fehler, was ja nachvollziehbar ist, da alle selects auch in group by sein müssen:
SELECT auf.AUFTRAGS_IDENT, auf.ZEITSTEMPEL FROM TRACEDATEN_AUFTRAG auf GROUP BY auf.AUFTRAGS_IDENT ORDER BY auf.ZEITSTEMPEL
Zudem muss ich den Zeitstempel noch ordnen lassen (ORDER BY)
Ich habe jetzt keine Idee wie ich das lösen könnte, vielleicht kann mir hier einer helfen?
Gruß Gustl
-
Gustl schrieb:
Ich habe jetzt keine Idee wie ich das lösen könnte, vielleicht kann mir hier einer helfen?
Das kommt ganz darauf an welcher Zeitstempel verwendet werden soll. Deine Gruppierung kann nur gehen, wenn du dich festlegt wie die Zeitstempel zusammengefasst werden.
z.B.:
SELECT auf.AUFTRAGS_IDENT, MAX(auf.ZEITSTEMPEL) as MaxZeitstempel FROM TRACEDATEN_AUFTRAG auf GROUP BY auf.AUFTRAGS_IDENT ORDER BY auf.ZEITSTEMPEL
-
Fragen wir mal so: Welcher Zeitstempel soll denn angezeigt werden?
Wenn du das so loesen moechtest, brauchst du irgendeine passende Aggregatfunktion, also zB. min oae.
Damit selektierst du dann eben min(zeitstempel), auftrags_ident und gruppierst nach auftrags_ident.
-
ja, danke, genau da war das Problem. MAX ist hier in meinem Fall die Lösung.
Danke euch!
Gruß un einen schönen Tag!
Gustl