Announcement

Collapse
No announcement yet.

Datensatz vor und nach dem Resultat ausgeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datensatz vor und nach dem Resultat ausgeben

    Hallo,

    gibt es einen SQL-Befehl, der mir den Datensatz vor und nach meinem SELECT-Ergebnis anzeigt?

    Beispiel:
    SELECT * FROM meineTabelle WHERE ID = 25

    RESULTAT:
    25 | Vorname25 | Nachname25 | Ort25

    Das Resultat soll aber Dank eines Zusatzbefehls liefern:
    24 | Vorname24 | Nachname24 | Ort24
    25 | Vorname25 | Nachname25 | Ort25
    26 | Vorname26 | Nachname26 | Ort26

    Ist das irgendwie möglich?

    Viele Grüße

  • #2
    Analytic Functions

    Ob man einen ganzen Datensatz anzeigen kann, weiß ich nicht, aber es gibt seit Version (?) lag und lead.
    Unter Oracle nennt sich das Analytic Functions.

    Wichtig ist bei diesen Funktionen, dass eine Vorgänger oder Nachfolger nur bei einer gegeben Reihenfolge definiert ist. Das ist aber sowieso Bestandteil dieser Funktioen (over ..partion.. order by), hat jedoch nichts mit dem klassischen order by des Gesamtergebnis zu tun.

    Mit diesem Befehl erhälst Du die Werte allerdings in einem Datensatz. Um das von dir gewünschte Ergebnis zu bekommen, musst du dann wohl noch mal mit 2 self joins arbeiten.

    Vielleicht geht es eleganter, kenn mich aber nicht weiter mit der MS Variante der Analytic Function oder Alternativen aus.
    Gruß, defo

    Comment


    • #3
      LAG und LEAD ist erst ab SQL-Server 2012 implementiert...

      Mit ROW_NUMBER () OVER (ORDER BY...) eine Ordnungsfeld in deine Tabelle bringen
      jeweils für -1 und +1 JOINen

      Comment


      • #4
        Oh, sorry, das hab ich nicht geahnt.
        Gruß, defo

        Comment

        Working...
        X