recent last sql tsql

last - Recuento de SQL para cada fecha



sql select recent date (7)

Cuando lanzas un DateTime a un int, se "trunca" al mediodía, es posible que desees despojar el día como tal.

cast(DATEADD(DAY, DATEDIFF(DAY, 0, created_date), 0) as int) as DayBucket

Tengo la siguiente necesidad

Tengo una tabla de registro que registra algunos clientes potenciales generados cada día.

Ahora necesito hacer un informe sobre la cantidad de clientes potenciales de cada día durante los últimos 10 días.

Digamos que la mesa se ve así:

tbl_leads id int, first_name nvarchar(100), last_name nvarchar(100), created_date datetime

Y necesito contar el número de clientes potenciales para cada día, 10 días en total. Por lo tanto, el conjunto de resultados debe verse algo como esto:

counted_leads | count_date 5 | 2009-04-30 7 | 2009-04-29 5 | 2009-04-28 7 | 2009-04-27

... y así

¿Alguien sabe cómo hacerlo de la mejor manera posible? Mi solución actual es iterar con un foreach en c # pero me gustaría mucho entregarlo en el servidor SQL en lugar de un SP.


El campo created_date es datetime y datetime , por lo que deberá quitar el tiempo antes de que funcione la agrupación si desea ir por fecha:

SELECT COUNT(created_date), created_date FROM table WHERE DATEDIFF(created_date, getdate()) < 10 GROUP BY convert(varchar, created_date, 101)


Es más eficiente hacer su agregación por entero y luego volver a convertir en fecha y hora para la presentación.

select cast(daybucket - 1 as datetime) as count_date, counted_leads from (select cast(created_date as int) as DayBucket, count(*) as counted_leads from mytable group by cast(created_date as int) ) as countByDay


Puedes usar:

Select count(created_date) as counted_leads, created_date as count_date from table group by created_date


Tuve una pregunta similar, sin embargo la mía involucró una columna Convertir (fecha, tiempo de mi). Tuve que alterar la mejor respuesta de la siguiente manera:

Select count(created_date) as counted_leads, Convert(date,created_date) as count_date from table group by Convert(date,created_date)


CREATE PROCEDURE [dbo].[sp_Myforeach_Date] -- Add the parameters for the stored procedure here @SatrtDate as DateTime, @EndDate as dateTime, @DatePart as varchar(2), @OutPutFormat as int AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. Declare @DateList Table (Date varchar(50)) WHILE @SatrtDate<= @EndDate BEGIN INSERT @DateList (Date) values(Convert(varchar,@SatrtDate,@OutPutFormat)) IF Upper(@DatePart)=''DD'' SET @SatrtDate= DateAdd(dd,1,@SatrtDate) IF Upper(@DatePart)=''MM'' SET @SatrtDate= DateAdd(mm,1,@SatrtDate) IF Upper(@DatePart)=''YY'' SET @SatrtDate= DateAdd(yy,1,@SatrtDate) END SELECT * FROM @DateList END

Simplemente ponga este Código y llame al SP de esta manera

exec sp_Myforeach_Date @SatrtDate=''03 Jan 2010'',@EndDate=''03 Mar 2010'',@DatePart=''dd'',@OutPutFormat=106

Gracias Suvabrata Roy ICRA Online Ltd. Calcuta


Select count(created_date) total , created_dt from table group by created_date order by created_date desc