Um produziert einige Datensätze aus dem Vormonat in der gleichen Zeile angezeigt werden, hatte ich meine Tabelle wie folgt zu sich selbst zu kommen:Selbst inkonsistenten Wert registrieren letzten Monat
SELECT
a.[periodOrderNum]
,SUM(a.AktivNy) as ActiveNew
,SUM(b.[AktivNy]) as ActiveNewPrevMonth
FROM myTable a
JOIN myTable b
ON a.customerSNKey = b.customerSNKey
AND a.periodOrderNum = b.periodOrderNum + 1
GROUP BY a.[periodOrderNum]
In dem obigen Code periodOrderNum
ist eine Auftragsnummer, die der Periode zugeordnet ist. Wenn z. B. die aktuelle Periode 5 ist, hat die vorherige Periode eine Bestellnummer von 4.
Und customerSNKey
ist der Seriennummernschlüssel des Kunden, den ich als eine meiner JOIN
Bedingungen verwende. Die andere Bedingung (a.periodOrderNum = b.periodOrderNum + 1
) verwende ich, um den Wert der vorherigen Periode zu erhalten. Aber die Ergebnisse sind nicht konsistent. Wie weiter unten im Bild zu sehen, für die Auftragsnummer 280 ist der Wert von ActiveNewPrevMonth
20203, die nicht der ActiveNew
Wert der Auftragsnummer 279.
Was bin ich in meinem beitreten falsch?
Es ist schwer zu sagen, da alle Daten nicht angezeigt werden. Ich würde die Abfrage ohne den Join ausführen und "UND periodOrderNum = 280" haben, um zu sehen, was es SUM versucht, nur um sicherzustellen, dass. Könnten Sie diese Ergebnisse zu Ihrer Frage hinzufügen? –
Machen Sie einige Daten und zeigen Sie DDL, Eingabe, Ausgabe und erwartete Ausgabe. Lies und handle auf [mcve]. PS Was ist, wenn es keine Daten für den vorherigen Monat gibt? – philipxy