MSSQL: Abfrage um Werte "täglich" zu gruppieren und Differenz von Werten zu berechnen

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Grimsey.

    MSSQL: Abfrage um Werte "täglich" zu gruppieren und Differenz von Werten zu berechnen

    Hallo zusammen,

    vielleicht könnt Ihr mir bei der Erstellung einer SQL-Abfrage helfen, ich stehe gerade auf dem Schlauch:

    In einer MSSQL-Datenbank werden die Betriebsstunden eines Zählers aller 15 Minuten abgespeichert. Siehe dazu Screenshot 1.
    Die Zählerwerte sind aufsteigend.

    Ich würde diese Werte nun gerne per Abfrage so abfragen, dass ich für jeden Tag die Differenz des letzten und ersten Wertes des Zählerstandes eines Tages erhalte.
    Damit erhalte ich eine Aussage darüber, wieviele Stunden am Tag die Anlage in dieser einen Betriebsart gelaufen ist.

    Ich habe dazu folgenden Code (siehe auch Screenshot 2):

    SQL-Abfrage

    1. Select
    2. DateAdd(Day, DateDiff(Day,0,Zeitstempel), 0) AS Date,
    3. Sum([BetriebsstundenAutothermerbetrieb]) as Value
    4. From dbo.RNV2
    5. Group by DateAdd(Day, DateDiff(Day,0,Zeitstempel), 0)
    6. Order by Date DESC


    Damit summiere ich aber alle Werte eines Tages und bilde nicht die Differenz, das ist mir klar.

    Wie könnte die Abfrage denn aussehen um mein Ziel zu erreichen?
    Wo bzw. nach welchem Begriff müsste ich suchen um mir das Wissen anzulesen?
    Kann mir jemand vielleicht einen Tipp oder Hinweis geben?

    Habt vielen dank im Voraus.
    Bilder
    • 2024-06-17_14-11.png

      32,22 kB, 537×1.053, 38 mal angesehen
    • 2024-06-17_14-12.png

      27,72 kB, 507×1.060, 41 mal angesehen
    Probier ma so:

    SQL-Abfrage

    1. Select Cast(Zeitstempel as Date) as TruncDat, Max(BetriebsstundenAutothermerbetrieb) - Min(BetriebsstundenAutothermerbetrieb) as Diff
    2. From RNV2
    3. Group By Cast(Zeitstempel as Date)

    Wenn das nicht das gewünschte Ergebnis ist, mache bitte ein Beispiel für Input und zugehöriges Ergebnis.
    Bestenfalls als fiddle