每个日期的SQL计数

The*_*ter 24 sql t-sql

我有以下需要

我有一个记录表,记录每天生成的索引.

现在,我需要在过去10天内针对每天的潜在客户数量进行报告.

让我们说这个表看起来像这样:

tbl_leads
id int,
first_name nvarchar(100),
last_name nvarchar(100),
created_date datetime
Run Code Online (Sandbox Code Playgroud)

我需要计算每天的潜在客户数量,总计10天.所以结果集看起来应该是这样的:

counted_leads | count_date
5             | 2009-04-30
7             | 2009-04-29
5             | 2009-04-28
7             | 2009-04-27
Run Code Online (Sandbox Code Playgroud)

... 等等

谁知道如何以最好的方式做到这一点?我目前的解决方案是在c#中使用foreach进行迭代,但我非常希望将它交给sql服务器而不是sp.

Fab*_*der 33

您可以使用:

Select
     count(created_date) as counted_leads,
     created_date as count_date
from
     table
group by
     created_date
Run Code Online (Sandbox Code Playgroud)

  • 我使用了这个,但created_date是一个具有完整日期时间的字段,所以我不得不在这个小组中应用这个小黑客:DATEADD(dd,0,DATEDIFF(dd,0,created_date))并且它们都像魅力一样! !:) (4认同)
  • 即使这个问题/答案很旧:要获取没有时间的日期,您可以使用 DATE(created_date) 而不是原始的created_date - 因此结果将按没有时间的日期分组! (2认同)

Dav*_*sky 6

您的created_date字段是datetime,因此如果您想按日期排序,则需要在分组工作之前剥去时间:

SELECT COUNT(created_date), created_date 
FROM table 
WHERE DATEDIFF(created_date, getdate()) < 10
GROUP BY convert(varchar, created_date, 101)
Run Code Online (Sandbox Code Playgroud)