0
So war die ursprüngliche Abfrage recht einfach.SQL-Abfrage, um die Anzahl der monatlichen Zeilen zurückzugeben, ist langsam
select MONTH(DateColumn), COUNT(DateColumn)
from myTable
where YEAR(DateColumn) = '2014'
group by MONTH(DateColumn)
order by MONTH(DateColumn)
Aber einer der Monate hatte keine Daten, und ich muss alle 12 Monate abgedeckt haben. Ich bin damit beschäftigt, es zu überarbeiten. Ich habe eine Lösung, aber es ist schmerzhaft langsam. Es muss einen besseren Weg geben.
select o.MonthCount, coalesce(d.total,0) from (
select top 12 ROW_NUMBER() over (order by (select 12)) as MonthCount from myTable
) o outer apply (
select month(e.DateColumn) as mon, COUNT(e.DateColumn) as total
from myTable e
where YEAR(e.DateColumn) = '2013'
and o.monthcount = month(e.DateColumn)
group by MONTH(e.DateColumn)
) d
Super! das hat ganz gut geklappt. Eine seltsame Sache, es kann Null für eine Zählung geben, und weder isnull noch coalesce on count (DateColumn) wird es auf 0 setzen. Aber ich sollte das auf App-Ebene beheben können. – Caimbul
Ah! warte .. ich habe es herausgefunden. Ich habe es in den inneren linken Join gesetzt, anstatt in die äußere select Abfrage. Das erste Mal mit cte's. So oder so thx! (nahm eine Abfrage, die etwa 3min bis 3s war ..) – Caimbul
@Caimbul Ich aktualisierte einen Teil der Antwort, ist das, was du meintest? 3 Minuten bis 3 Sekunden klingt gut. – artm