Announcement

Collapse
No announcement yet.

SQL Abfrage mit Fallstrick GROUP BY

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

  • SQL Abfrage mit Fallstrick GROUP BY

    Hallo....

    ich komme in meiner Abfrage nicht weiter und vielleicht sehe ich auch den Wald vor lauter Bäumen nicht... ;-)

    Folgende Tabelle: (Auszug)

    [highlight=sql]
    SELECT Z.VERTRAGNR, Z.RECHNUNGDAT, Z.GEBUEHR
    FROM VTRGFAKT Z
    WHERE Z.VERTRAGNR = 7 OR Z.VERTRAGNR = 236
    ORDER BY Z.VERTRAGNR, Z.RECHNUNGDAT DESC
    [/highlight]

    VERTRAGNR RECHNUNGDAT GEBUEHR
    7 2020-05-06 00:00:00.000 167
    7 2019-06-07 00:00:00.000 160
    7 2018-02-21 00:00:00.000 160
    7 2018-02-21 00:00:00.000 160
    7 2017-02-21 00:00:00.000 152,25
    7 2017-02-21 00:00:00.000 152,25
    7 2016-05-27 00:00:00.000 152,25
    7 2016-05-24 00:00:00.000 152,25
    7 2015-02-16 00:00:00.000 145
    7 2014-03-06 00:00:00.000 145
    236 2021-10-14 00:00:00.000 488
    236 2020-08-21 00:00:00.000 593
    236 2019-08-15 00:00:00.000 469
    236 2018-06-13 00:00:00.000 469
    236 2017-07-13 00:00:00.000 446,25
    236 2016-08-02 00:00:00.000 446,25
    236 2015-07-08 00:00:00.000 425
    236 2014-06-04 00:00:00.000 425

    Wenn ich jetzt das GROUP BY beginne dann erhalte ich folgendes:

    [highlight=sql]
    SELECT Z.VERTRAGNR, MAX(Z.RECHNUNGDAT) AS RECHNUNGDAT, MAX(Z.GEBUEHR) AS GEBUEHR
    FROM VTRGFAKT Z
    WHERE Z.VERTRAGNR = 7 OR Z.VERTRAGNR = 236
    GROUP BY Z.VERTRAGNR
    [/highlight]

    VERTRAGNR RECHNUNGDAT GEBUEHR
    7 06.05.2020 00:00:00 167
    236 14.10.2021 00:00:00 593

    Die Abfrage ist Prinzipiell richtig. Weil ich ja MAX(Z.GEBUEHR) angebe.
    Die Gebühren können aber auch Rückläufig sein!
    Um das GROUP BY nutzen zu können muss ich ja MIN MAX etc. verwenden.
    Was muss ich also machen, dass er mir zum höchsten RECHNUNGDAT die richtige GEBUEHR ausgibt.

    Ziel:
    VERTRAGNR RECHNUNGDAT GEBUEHR
    7 2020-05-06 00:00:00.000 167
    236 2021-10-14 00:00:00.000 488


    MfG flumi112



  • #2
    Versuch

    SELECT Z.VERTRAGNR, Z.RECHNUNGDAT, Z.GEBUEHR FROM VTRGFAKT Z
    WHERE
    Z.RECHNUNGDAT=(SELECT MAX(RECHNUNGDAT) FROM VTRGFAKT S WHERE Z.VERTRAGNR=S.VERTRAGNR)
    AND (Z.VERTRAGNR=7 OR Z.VERTRAGNR=236)
    Christian

    Comment


    • #3
      Hallo Christian, dass war ja mal eine Express Antwort!

      Krass... Es hat geklappt. Dankeschön!!!!

      Comment

      Working...
      X