一个统计报表sql问题
今天朋友问我了一个统计报表的sql问题。我弄了好久。终于算是写出来了。这里记录下。
问题:
1 a 2014-01-01 02:30:21
1 b 2014-01-03 03:20:02
1 c 2014-01-03 06:10:30
1 d 2014-01-06 11:30:15
1 e 2014-01-06 11:10:18
1 f 2014-01-06 12:30:19
想要达到查询结果:
addtime---------------count
2014-01-01 1
2014-01-02 0
2014-01-03 2
2014-01-04 0
2014-01-05 0
2014-01-06 3
--删除临时表 DROP TABLE #tempDate --创建临时表 CREATE TABLE #tempDate(CreateTime DATETIME) --设置起始时间 DECLARE @startTime DATETIME DECLARE @endTime DATETIME SET @startTime=‘2015-3-10‘ SET @endTime=‘2015-4-28‘ --生成日期数据 WHILE @startTime<@endTime BEGIN INSERT INTO #tempDate ( CreateTime ) VALUES ( CAST(DATEPART(yy,@startTime) AS NVARCHAR(13))+‘-‘+ CAST(DATEPART(mm,@startTime) AS NVARCHAR(13))+‘-‘+ CAST(DATEPART(dd,@startTime) AS NVARCHAR(13)) -- CreateTime - datetime ) SET @startTime=DATEADD(dd,1,@startTime) CONTINUE END --查询统计结果 SELECT #tempDate.CreateTime,COUNT(b.CreateTime) SumCount FROM #tempDate LEFT JOIN TestTable1 b ON (CAST(DATEPART(yy,#tempDate.CreateTime) AS NVARCHAR(13))+‘-‘+ CAST(DATEPART(mm,#tempDate.CreateTime) AS NVARCHAR(13))+‘-‘+ CAST(DATEPART(dd,#tempDate.CreateTime) AS NVARCHAR(13))) = (CAST(DATEPART(yy,b.CreateTime) AS NVARCHAR(13))+‘-‘+ CAST(DATEPART(mm,b.CreateTime) AS NVARCHAR(13))+‘-‘+ CAST(DATEPART(dd,b.CreateTime) AS NVARCHAR(13)))
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。