ich die folgende Tabelle erstellt haben (über UNION ALL):Ändern Sie Datum und Gruppe von Fiscal Monatsende
ID Date Hour Weight Fiscal
AAA 1/27/2009 0 10 0
AAA 1/30/2009 0 20 0
AAA 2/14/2009 0 10 0
AAA 2/18/2009 0 20 0
AAA 2/27/2009 0 20 0
AAA 2/28/2009 0 20 0
AAA 1/14/2009 10 0 0
AAA 2/14/2009 20 0 0
AAA 2/16/2009 10 0 0
AAA 2/25/2009 10 0 0
AAA 2/26/2009 10 0 0
AAA 3/3/2009 20 0 0
NULL 0 0 0 1/28/2009
NULL 0 0 0 2/27/2009
NULL 0 0 0 3/29/2009
Und ich möchte abzurufen:
ID Date Hour Weight
AAA 1/28/2009 10 10
AAA 2/27/2009 50 50
AAA 3/29/2009 20 20
Es sollte zuerst das Datum konvertieren Spalte zum nächsten Geschäftsjahresende Ende FISCAL (zum Beispiel 27.01.2007 -> 28.01.2009, 30.01.2009 -> 27.02.2009, etc.) und gruppiere dann um diesen Wert.
konnte ich verwenden:
SELECT ID
, left(CONVERT(VARCHAR(10)
, date, 111),7) as Date
, round(sum(Hours),0) as Hours
, round(sum(Weight),0) as Weight
FROM ...
GROUP BY ID
, left(CONVERT(VARCHAR(10), date, 111),7)
ORDER by ID ASC
, left(CONVERT(VARCHAR(10), date, 111),7) ASC
Aber das nur Gruppen von Kalender Daten, nicht nach dem Fiscal Monat endet ich in der FISCAL Spalte haben.
Welche DB-Engine verwenden Sie hier? Sie können auch die SQL-Nachricht bereitstellen, die die erste Ausgabe zurückgibt. –
Sie müssen diese Frage klären. Fiscal in der obigen Tabelle ist 0 für die ersten 12 Einträge, also wie werden diese Daten berechnet? Sind Hour und Weight irgendwie mit der Berechnung des Geschäftsmonats verbunden? Werden mehrere Zeilen zusammengefügt, um eine einzelne Zeile zu berechnen (z. B. die Verknüpfung von AAA-Einträgen in mehreren Zeilen, um den tatsächlichen Geschäftsmonat zu bestimmen)? Reduziere auf das Grundproblem ... – razzed
Der erste Schritt besteht darin, die Daten in zwei separate Tabellen zu bringen. Sie möchten, dass die zweite Tabelle die Steuermonate mit einem Startdatum und einem Enddatum für jedes Jahr darstellt. Das aus dem UNION ALL-Chaos heraus zu sortieren ist albern - viel zu sehr nach harter Arbeit. Wenn diese Tabelle verfügbar ist, wird die Gruppierung ziemlich einfach; Sie gruppieren sich am Steuerende und schließen sich an "dateval BETWEEN fiscal_start AND fiscal_end"; Das Angebot von BETWEEN/AND ist hier sehr hilfreich. –