He creado el siguiente procedimiento almacenado que se utiliza para contar el número de registros por día entre una gama específica para una ubicación seleccionada:Conde SQL para incluir los valores cero
[dbo].[getRecordsCount]
@LOCATION as INT,
@BEGIN as datetime,
@END as datetime
SELECT
ISNULL(COUNT(*), 0) AS counted_leads,
CONVERT(VARCHAR, DATEADD(dd, 0, DATEDIFF(dd, 0, Time_Stamp)), 3) as TIME_STAMP
FROM HL_Logs
WHERE Time_Stamp between @BEGIN and @END and ID_Location = @LOCATION
GROUP BY DATEADD(dd, 0, DATEDIFF(dd, 0, Time_Stamp))
pero el problema es que el resultado no muestra los días en los que no hay registros, estoy bastante seguro de que tiene algo que ver con mi declaración WHERE que no permite que se muestren los valores cero, pero no sé cómo superar este problema.
Gracias de antemano Neil
Si se quita la agregación se puede conseguir las filas más atrás que se puede esperar? –
Como han publicado los demás, primero necesita una lista real de los días (prefiero un archivo de calendario permanente, son especialmente útiles si el calendario fiscal de una empresa no coincide con el calendario local estándar). Sin embargo, ** nunca ** utilice 'BETWEEN', _especialmente_ para valores de fecha/hora/indicación de fecha y hora. Nuestro propio Aaron Bertrand tiene una [publicación de blog] (http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common. aspx) sobre los problemas particulares que tiene SQL Server al usar esta cláusula. –