Benutzer mit den meisten Antworten
n Datensätze pro Auftragsnummer ausgeben

Frage
-
Hallo,
angenommen ich habe folgende Tabelle (vereinfachtes Beispiel)
Auftrag, datum, taetigkeit
100, 21.1.2013, tue das
100, 22.1.2013, tue dies
100, 23.1.2013, und tue noch was
101, 20.1.2013, tue was
101, 20.1.2013, tue noch was
101, 21.1.2013, jetzt tue ich was
...Nun möchte ich von jedem Auftrag die zwei letzten Datensätze angezeigt bekommen:
100, 22.1.2013 ...
100, 23.1.2013 ...
101, 20.1.2013 ...
101, 21.1.2013 ...Existiert nur ein Datensatz für ein Auftrag, soll nur dieser ausgegeben werden.
Wie sieht dafür die SQL Abfrage aus?
mfg
Antworten
-
Hallo,
select auftrag, datum, taetigkeit from (select auftrag,datum,taetigkeit,row_number()
over(partition by auftrag order by datum desc )
as rrn from mytabelle)x where x.rrn <3 order by auftrag,datum desc;
Das wäre auch eine Möglichkeit.
Gruss Uli
- Als Antwort vorgeschlagen Christoph Muthmann Dienstag, 19. Februar 2013 12:49
- Als Antwort markiert HessischerBub Dienstag, 19. Februar 2013 17:56
-
Hallo,
ich bin jetzt auf diese Select-Abfrage gekommen:
select auftrag, datum, taetigkeit from mytabelle myt where myt.guid in ( select top 2 guid from mytabelle where auftrag = myt.auftrag order by datum desc) order by auftrag, datum desc
Verbesserungspotential?
- Als Antwort markiert HessischerBub Dienstag, 19. Februar 2013 17:56
Alle Antworten
-
Hallo,
ich bin jetzt auf diese Select-Abfrage gekommen:
select auftrag, datum, taetigkeit from mytabelle myt where myt.guid in ( select top 2 guid from mytabelle where auftrag = myt.auftrag order by datum desc) order by auftrag, datum desc
Verbesserungspotential?
- Als Antwort markiert HessischerBub Dienstag, 19. Februar 2013 17:56
-
Hallo,
select auftrag, datum, taetigkeit from (select auftrag,datum,taetigkeit,row_number()
over(partition by auftrag order by datum desc )
as rrn from mytabelle)x where x.rrn <3 order by auftrag,datum desc;
Das wäre auch eine Möglichkeit.
Gruss Uli
- Als Antwort vorgeschlagen Christoph Muthmann Dienstag, 19. Februar 2013 12:49
- Als Antwort markiert HessischerBub Dienstag, 19. Februar 2013 17:56
-
Hallo Uli,
ich habe deine Variante mit meiner Variante verglichen (diesmal mit den echten Daten) und der Ausführungsplan zeigt da ein Verhältnis 10% zu 90%. Deine Variante ist danach die "kostengünstigere".
Nun habe ich was neues zu lernen, weil ich dieses Konstrukt noch nicht kenne.
mfg
-
Hallo Uli,
ich habe deine Variante mit meiner Variante verglichen (diesmal mit den echten Daten) und der Ausführungsplan zeigt da ein Verhältnis 10% zu 90%. Deine Variante ist danach die "kostengünstigere".
Nun habe ich was neues zu lernen, weil ich dieses Konstrukt noch nicht kenne.
mfg
Ich denke, das liegt daran, dass in meinem Ansatz die Unterabfrage nur einmal ausgelöst wird.
Gruss Uli