zoukankan      html  css  js  c++  java
  • 一个统计报表sql问题

    今天朋友问我了一个统计报表的sql问题。我弄了好久。终于算是写出来了。这里记录下。

    问题:

     id--------------name--------------addtime
    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
     
    主要难点是:2014.1.2 这天没有数据,怎么按照这种日期排序呢?
    最终的思路是:先生成日期的临时表,再根据日期的临时表进行排序。
    我根据朋友的需求,创建的表:
    表数据:
    代码:
    --删除临时表
    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)))
     
  • 相关阅读:
    jquery 第二节 Dom和jQuery的互相转换
    jquery 第一节 什么是jQuery
    SQL四大语句、四大完整性、五大约束
    empty和is_null以及isset函数在0、”0”、‘空串’、NULL、false、array()的计算值
    WAMP常用环境配置
    解读Java内部类
    每日编程系列——暗黑的字符串
    每日编程系列——跳石板
    每日编程系列——优雅的点
    每日编程系列——回文序列
  • 原文地址:https://www.cnblogs.com/woaic/p/4450253.html
Copyright © 2011-2022 走看看