我有以下需求
我有一个日志表,记录每天产生的一些线索。
现在,我需要对过去10天内每天的潜在客户数量进行报告。
假设表格看起来像这样:
tbl_leads
id int,
first_name nvarchar(100),
last_name nvarchar(100),
created_date datetime
我需要计算每天的线索数量,总共10天。因此,结果集应该如下所示:
counted_leads | count_date
5 | 2009-04-30
7 | 2009-04-29
5 | 2009-04-28
7 | 2009-04-27
..。诸若此类
有人知道怎么做才是最好的方法吗?我目前的解决方案是在c#中使用foreach进行迭代,但我非常希望在sql server上使用它,而不是在sp中。
发布于 2009-04-30 19:22:08
您可以使用:
Select
count(created_date) as counted_leads,
created_date as count_date
from
table
group by
created_date
发布于 2009-04-30 19:29:45
您的created_date字段为datetime
,因此如果您想要按日期进行分组,则需要在分组生效之前去掉时间:
SELECT COUNT(created_date), created_date
FROM table
WHERE DATEDIFF(created_date, getdate()) < 10
GROUP BY convert(varchar, created_date, 101)
发布于 2009-04-30 20:26:44
最有效的方法是按整数进行聚合,然后转换回datetime进行表示。
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
https://stackoverflow.com/questions/808611
复制相似问题