[英]SQL Query Get counts for everyday day of the month
I am building a graph which will show the daily counts of Applicants who have applied for internship. 我正在建立一个图表,其中将显示已申请实习的申请人的每日人数。 Using the following SQL query I get the counts correctly, however I am missing the days which there are ZERO Applicants. 使用以下SQL查询,我可以正确获得计数,但是我错过了存在零申请人的日子。
SELECT YEAR(created) AS [Year],
MONTH(created) AS [Month],
DAY(created) AS [Day],
COUNT(*) AS [Count]
FROM Applicants
GROUP BY
YEAR(created),
MONTH(created),
DAY(created)
Order by [Year],[Month], [DAY] asc
Current results are: 当前结果是:
Year/Month/Day = Count
2014/01/01 = 1
2014/01/06 = 2
Desired results would be: 所需的结果将是:
Year/Month/Day = Count
2014/01/01 = 1
2014/01/02 = 0
2014/01/03 = 0
2014/01/04 = 0
2014/01/05 = 0
2014/01/06 = 2
2014/01/07 = 0
2014/01/08 = 0
... etc....
How can I get the entire months days with zero count as well? 如何获得零计数的整个月数?
Try the following approach as alluded to by Bob; 尝试使用Bob提到的以下方法;
DECLARE @DateFrom DATE = '20140101',
@DateTo DATE = '20141231'
;WITH DateCTE (xDate) AS
(
SELECT TOP (DATEDIFF(DAY, @DateFrom, @DateTo) + 1)
DATEADD(DD, ROW_NUMBER() OVER (ORDER BY (SELECT NULL))-1, @DateFrom)
FROM syscolumns T1
--CROSS Uncomment if you need more dates
--JOIN syscolumns T2
)
SELECT DT.xDate
,[Count] = ISNULL(DA.[Count], 0)
FROM DateCTE DT
LEFT
JOIN
(
SELECT [Count] = COUNT(*)
,Created = CAST(created AS DATE)
FROM Applicants
GROUP BY CAST(created AS DATE)
) DA ON DT.xDate = DA.Created
ORDER BY xDate ASC
not the same table names but this is tested on actual data 表名称不同,但已根据实际数据进行了测试
declare @DateStart DateTime
declare @DateEnd DateTime
set @DateStart = CAST((select MIN(addDate) from docSVsys) AS DATE)
set @DateEnd = CAST((select MAX(addDate) from docSVsys) AS DATE)
select @DateStart
select @DateEnd
;WITH Days
as
(
SELECT @DateStart as [Day]
UNION ALL
SELECT DATEADD(DAY, +1, [Day]) as 'Day'
FROM Days
where [DAY] <= @DateEnd
)
select [Days].[Day], count([docSVsys].[sID])
from [Days]
left join [docSVsys]
on cast(docSVsys.addDate AS DATE) = [Days].[Day]
group by [Days].[Day]
order by [Days].[Day]
OPTION (MAXRECURSION 1000);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.