SQL-Query - summierte Menge Between Termin und Termin plus 7 Tagen

dash 20 Zuverlässigkeitspunkte
2024-03-12T10:22:21.91+00:00

Hallo zusammen,

ich habe eine SQL-Query erstellt, wo der Output so aussieht (einfache SELECT FROM mit paar WHERE-Bedingungen):

User's image

Wie muss die SQL-Query Aussehen, damit ich folgendes Ergebnis erhalte?

User's image

Mit der SUM() OVER (Partition By) -Clausel erhält man nur die kumulierte Menge und nicht die Summe. Ich stehe momentan total auf dem Schlauch und komme nicht auf mein gewünschtes Ergebnis, auch so viel ich meine Abfrage mit GROUP BY etc. erweitere.

Kann mir jemand Hinweise oder Tipps geben, wie ich auf mein gewünschtes Ergebnis kommen kann?

Über jeglichen Denkanstöße wäre ich sehr dankbar.

Vielen Dank im Voraus.

Gruß

dash

SQL Server
SQL Server
Eine Familie von Verwaltungs- und Analysesystemen für relationale Datenbanken von Microsoft für E-Commerce-, Branchen- und Data Warehousing-Lösungen.
15 Fragen
0 Kommentare Keine Kommentare
{count} Stimmen

Akzeptierte Antwort
  1. Olaf Helper 45,121 Zuverlässigkeitspunkte
    2024-03-12T10:53:00.3466667+00:00

    Das Datenmodell ist nicht ganz intuitiv und die Beschreibung auch nicht. Grundsätzlich lässt sich das per Sub-Select lösen, Beispiel:

    SELECT *,
          (SELECT SUM(Menge) 
           FROM yourTable AS SUB
           WHERE SUB.Termin1 BETWEEN T1.Termin2 AND DATEADD(day, 7, T1.Termin2))
    FROM yourTable AS T1
    
    
    Eine Person fand diese Antwort hilfreich.
    0 Kommentare Keine Kommentare

1 zusätzliche Antwort

Sortieren nach: Am hilfreichsten
  1. dash 20 Zuverlässigkeitspunkte
    2024-03-12T12:18:38.13+00:00

    Hallo Olaf,

    vielen Dank für die schnelle Rückmeldung. Das hat mir geholfen und somit ist mein Problem gelöst! An die Sub-Query hab ich jetzt so nicht mehr gedacht, aber total simpel und klar!

    Gruß

    dash

    0 Kommentare Keine Kommentare

Ihre Antwort

Fragesteller*innen können Antworten als akzeptierte Antworten markiert werden, wodurch Benutzer*innen wissen, dass diese Antwort das Problem gelöst hat.