Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Pivot-Abfrage: Anzeigen der letzten 5 Jahre

Begonnen von mad, Januar 06, 2023, 09:45:31

⏪ vorheriges - nächstes ⏩

mad

Hallo Zusammen,
erstmal ein gutes neues Jahr.
War jetzt schon länger nicht mehr im Forum und bräuchte Hilfe zu nachfolgenden Thema.

Möchte über eine Pivot-Abfrage die Gesamtstunden pro Jahr für die letzten fünf Jahre anzeigen lassen.
Bisher habe ich das wie folgt gelößt:
Code:
TRANSFORM Sum([Registrierung-Üb].ÜbStdN_min) AS SummevonÜbStdN_min
SELECT [Registrierung-Üb].Namesyn
FROM Übungen INNER JOIN [Registrierung-Üb] ON Übungen.UebKenn = [Registrierung-Üb].Übungen
WHERE (((Year([ADatumU])) Between 2016 And 2022) AND (([Registrierung-Üb].Übungen) Not Like 'AD*' And ([Registrierung-Üb].Übungen) Not Like 'VA*' And ([Registrierung-Üb].Übungen) Not Like 'VS*'))
GROUP BY [Registrierung-Üb].Namesyn
PIVOT Year([ADatumU]) In (2016,2017,2018,2019,2020,2021,2022);

Wenn ich das aber so lasse, muß ich jedesmal zum Jahreswechsel die neue Jahreszahl z.B. 2023 ändern bzw. hinzufügen.

Für die Where-Klausel habe ich folgendes ausprobiert:
Code:
...
WHERE (((Year([ADatumU]))>Year(Date())-5) AND ......
...
Funktioniert auch soweit.

Leider weis ich nicht wie ich das für die Pivot-Klausel anpassen kann das auch hier das aktuzelle Jahr-5 herangezogen wird.

Code wie oben:
...
PIVOT Year([ADatumU]) In (2016,2017,2018,2019,2020,2021,2022);

Über Unterstützung würde ich mich sehr freuen.

Gruss
mad

ebs17

PIVOT Year(ADatumU) In (2016,2017,2018,2019,2020,2021,2022)
Ohne die fixierten Spalten wird das genommen, was die Abfrage liefert. Da hier gleichzeitig die Umwandlung von Datum auf Jahr erfolgt, muss vorher nur das Datum passend gefiltert werden => Filtern über WHERE erfolgt vor Gruppieren und Pivotisieren.
TRANSFORM
   SUM([Registrierung-Üb].ÜbStdN_min) AS SummevonÜbStdN_min
SELECT
   [Registrierung-Üb].Namesyn
FROM
   Übungen
      INNER JOIN [Registrierung-Üb]
      ON Übungen.UebKenn = [Registrierung-Üb].Übungen
WHERE
   ADatumU BETWEEN DateSerial(Year(Date()) - 6, 1, 1)
      AND
   Date()
      AND
   [Registrierung-Üb].Übungen NOT Like 'AD*'
      AND
   [Registrierung-Üb].Übungen NOT Like 'VA*'
      AND
   [Registrierung-Üb].Übungen NOT Like 'VS*'
GROUP BY
   [Registrierung-Üb].Namesyn
PIVOT
   Year(ADatumU)
Mit dem Datumsfilter werden also die Werte hier vom 01.01.2017 bis heute ausgewertet.
Mit freundlichem Glück Auf!

Eberhard

mad