creo que tengo una pregunta difícil aquí ... :(Incluir meses que faltan en consulta GROUP BY
Estoy tratando de obtener un recuento ordenado por mes, aún cuando es cero Aquí está la consulta problema:.
SELECT datename(month, OrderDate) as Month, COUNT(OrderNumber) AS Orders
FROM OrderTable
WHERE OrderDate >= '2012-01-01' and OrderDate <= '2012-06-30'
GROUP BY year(OrderDate), month(OrderDate), datename(month, OrderDate)
Lo que estoy buscando a conseguir es algo como esto:.
Month Orders
----- ------
January 10
February 7
March 0
April 12
May 0
June 5
... pero mi consulta se salta una fila de marzo y mayo he intentado COALESCE(COUNT(OrderNumber), 0)
y ISNULL(COUNT(OrderNumber), 0)
pero estoy bastante seguro la agrupación es ca usando eso para no trabajar.
Parece que 'OrderTable' no tiene registros para marzo o mayo, por lo que la selección de esta tabla por sí sola no puede devolver un resultado para esos meses. Posibles soluciones alternativas: si su base de datos tiene una tabla maestra de fechas, puede aprovechar eso, o puede crear su propia tabla de fechas sobre la marcha. –
Como dijo @andyholaday: crea una tabla de búsqueda con enero ... diciembre y haz una combinación a la izquierda, y obtendrás los meses faltantes. – kd7