Hallo ich versuche gerade eine Lösung für einen Rolling Average zu erarbeiten und scheitere gerade an folgenden Problem.
Mittels
erreiche ich es zwar, dass er die letzten 365 Zeilen vor der aktuellen ermittelt, nur leider eben nicht das es exakt ein Jahr ist, da ein Buchungsdatum natürlich mehrfach vorkommen kann. Dabei ist eine Aggregation keine Lösung das es bewußt unterschiedliche Belegarten geben kann die eben mehr als nur ein Buchungsdatum pro Tag zur Folge haben.
Versuche wie....
...DATEADD(year,-1,Buchungsdatum) AND Buchungsdatum..
...DATEDIFF(day,Buchungsdatum,DATEADD(year,-1,Buchungsdatum))...
...usw. haben nicht geholfen. Eine Where Bedingung innerhalb der Window Funktion läuft auch nicht... ich weiß einfach nicht weiter und hoffe auf Tips von euch.
Mittels
SQL:
,ROUND(AVG([Wert in Hauswährung]) OVER (PARTITION BY Materialnummer, Kontonummer, Werk ORDER BY Buchungsdatum ROWS BETWEEN 365 PRECEDING AND CURRENT ROW),2) AS Rolling_AVG
erreiche ich es zwar, dass er die letzten 365 Zeilen vor der aktuellen ermittelt, nur leider eben nicht das es exakt ein Jahr ist, da ein Buchungsdatum natürlich mehrfach vorkommen kann. Dabei ist eine Aggregation keine Lösung das es bewußt unterschiedliche Belegarten geben kann die eben mehr als nur ein Buchungsdatum pro Tag zur Folge haben.
Versuche wie....
...DATEADD(year,-1,Buchungsdatum) AND Buchungsdatum..
...DATEDIFF(day,Buchungsdatum,DATEADD(year,-1,Buchungsdatum))...
...usw. haben nicht geholfen. Eine Where Bedingung innerhalb der Window Funktion läuft auch nicht... ich weiß einfach nicht weiter und hoffe auf Tips von euch.