0
Ich muss YTD und letztes Jahr YTD auf einer Tabelle [SQL Server 2012] berechnen. Unten ist die Abfrage, die ich versucht habe. Es wird für einige Fälle verdoppelt und verdreifacht.SQL YTD und letztes Jahr YTD auf vollständige Daten
SELECT SUM(A.RevisionNumber)YTD,SUM(P.RevisionNumber)LY_YTD,B.OrderDateM,B.OrderDateY
FROM
(select MONTH(OrderDate)OrderDateM,YEAR(OrderDate)OrderDateY from sales.SalesOrderHeader B
group by MONTH(OrderDate),YEAR(OrderDate))B
LEFT JOIN
(select SUM(RevisionNumber)RevisionNumber,MONTH(OrderDate)OrderDateM,YEAR(OrderDate)OrderDateY
from sales.SalesOrderHeader
group by MONTH(OrderDate),YEAR(OrderDate))A
ON A.OrderDateM<=B.OrderDateM AND A.OrderDateY=B.OrderDateY
LEFT JOIN
(select SUM(RevisionNumber)RevisionNumber,MONTH(OrderDate)OrderDateM,YEAR(OrderDate)OrderDateY
from sales.SalesOrderHeader
group by MONTH(OrderDate),YEAR(OrderDate))P
ON P.OrderDateM<=B.OrderDateM AND P.OrderDateY=B.OrderDateY-1
GROUP BY B.OrderDateM,B.OrderDateY
ORDER BY B.OrderDateY,B.OrderDateM
Hinzufügen von Beispieldaten als Bild wird Ihnen nicht helfen .. Niemand kann es verwenden, um die Abfragen zu testen. Fügen Sie Beispieldaten als Text im Tabellenformat hinzu. 68 Fragen mit 7 Jahren Zeit in SO sollten Sie das wissen. –
Wenn die Werte genau doppelt und dreifach sind, dann ist es ein ziemlich gutes Zeichen, dass Ihre Abfrage mehrfach zurückgibt Zeilen für einige Ihrer Gruppierungen. Dies ist normalerweise ein Zeichen dafür, dass die Join-Prädikate nicht korrekt sind. Wir können unmöglich irgendwelche Details liefern, da Sie keine für uns bereitgestellt haben. Hier ist ein großartiger Ort, um anzufangen. https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –
Der erste Join gibt * n * Zeilen für die * nth * Monate und zurück der 2. verbindet diese 'n' Monate mit anderen' n' Monaten, also richtig für Januar, zweimal für Februar, verdreifachen für März, etc. Schnelle & schmutzige Lösung: Dividiere 'LY_YTD' durch die Monatsnummer. Saubere Lösung: Schreibe auf zwei Selects (aktuelles & letztes Jahr) und äußere sie zusammen. – dnoeth