Ich habe eine SQL-Abfrage, die ich verwende, um die Anzahl der Arbeitsaufträge zu zeigen, die am Tag innerhalb eines bestimmten Datumsbereichs erstellt wurden. Es funktioniert gut, wenn ich einen einzelnen Zeitraum abfrage, z. B. 3/1/2016 bis 31.03.2016.SQL Query zeigt dieselben Daten an, basiert aber auf unterschiedlichen Daten in derselben Ansicht
SELECT DATEADD(dd, DATEDIFF(dd, 0, dateCreated), 0) the_date,
COUNT(*) work_order_count
FROM WorkOrder
where active = 1 and
dateCreated >= '3/1/2016' and
dateCreated <= '3/31/2016 23:59:59'
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, dateCreated), 0)
order by 1;
Ich möchte diese gleiche Abfrage weiter einen Schritt zu tun, so dass ich die gleichen Daten abfragen können, sondern zeigen die Ergebnisse für mehrere Datumsbereiche. Mein besonderer Zweck ist es, Daten für den Vorjahresvergleich nebeneinander darzustellen. Idealerweise möchte ich die Anzahl der Arbeitsaufträge anzeigen, die in den Jahren 2014, 2015 und 2016 für 3/1-3/31 erstellt wurden, aber alle innerhalb derselben Ansicht/demselben Ergebnis.
Ist das möglich? Ich habe mir Joins angeschaut, aber sie scheinen zu sein, wenn Sie verschiedene Tabellen verwenden, nicht die gleiche.
eine gespeicherte Prozedur erstellen Das akzeptiert Ihre Start-/Enddaten als Parameter. Je nachdem, wie kreativ Sie mit dieser Prozedur arbeiten möchten, sollten Sie einfach 3 Datensätze zurückgeben können, indem Sie eine einfache Datumsmathematik mit der Funktion 'dateadd()' von sql durchführen. – fnostro
Self-Joins können mit Unterabfragen in derselben Tabelle durchgeführt werden, z. B .: 'INNER JOIN (Wählen Sie aus WorkOrder ) als WorkOrderAlias1 auf WorkOrderAlias1.somejoinfield = WorkOrder.somejoinfield' –
fnostro