Announcement

Collapse
No announcement yet.

Summe aus allen vorherigen Zeilen

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

  • Summe aus allen vorherigen Zeilen

    Hallo,

    ich stehe wieder vor einer Schwierigkeit bei SQL Abfragen.

    Ich habe mir eine Funktion geschrieben, welche dieses Ergebnis liefert.
    sql.jpg


    Wie bekomme ich es hin - und ich finde einfach nichts - dass in der jeweiligen Zeile immer eine Summe aller Empfangenen in der Vergangenheit steht?

    Also in Zeile 3 muss die Summer aus Zeile 1,2,3 stehen.
    In Zeile 4 muss die Summe aus Zeile 1,2,3,4 stehen.
    In Zeile 5 muss die Summe aus Zeile 1,2,3,4,5 stehen.
    In Zeile .. und so weiter.

    Vielen Dank schonmal
    dudas

  • #2
    Das nennt sich window functions oder analytic functions, sollte mit diesen Begriffen einfach im Netz zu finden sein.
    partition over, rank, dense rank, .. usw. auch mit einer halbwegs aktuellen ms sql server version sollte es verfügbar sein, 2008er einige, 2012 schon recht viele.
    Gruß, defo

    Comment


    • #3
      Ahja danke sehr. Sieht aus als wäre es das, was ich brauchen. Muss es nur noch verstehen und einsetzen können.

      Comment


      • #4
        Originally posted by dudas View Post
        Ahja danke sehr. Sieht aus als wäre es das, was ich brauchen. Muss es nur noch verstehen und einsetzen können.
        Stell Dir vor, Du hast kein SQL, sondern ein Excelsheet.
        Das normalste der Welt ist hier eine Formel zu basteln, die auf vorige oder nachfolgende Zellen zugreift.
        Unter Standard SQL geht das normalerweise nicht!

        Die Window Functions liefern aber alles was man dazu braucht. Und noch mal kurz zurück zu Excel, wenn Du auf vorige oder nachfolgende Zellen zugreifen willst, verwendest Du implizit eine vorgegebene (aktuelle) Sortierung der Excel Zellen. (Meist sind die Sheets im Eimer, wenn man versehentlich anders sortiert)
        Diese Sortieranforderung liegt bei der Aufgabenstellung in der Natur der Sache und muss folglich häufig in den entsprechenden Window Functions angegeben werden (over....)

        Ein weiteres Stichwort für Dich ist "runinning total".
        Ein Beispiel:
        [highlight=sql]
        SELECT k.id, k.Saldo,
        SUM(k.Saldo) OVER(ORDER BY id ROWS UNBOUNDED PRECEDING)
        FROM konto k
        where k.Saldo is not null
        ORDER BY id;
        [/highlight]
        Gruß, defo

        Comment

        Working...
        X