当前位置: 代码迷 >> Sql Server >> 用sql话语按指定时间段分组统计
  详细解决方案

用sql话语按指定时间段分组统计

热度:32   发布时间:2016-04-24 09:13:11.0
用sql语句按指定时间段分组统计
查询语句:
SELECT
SUM (JE) AS JE,
RQ
FROM
dllsd
WHERE
rq BETWEEN '2014-04-08'
AND '2014-04-14'
AND QDDM = '4101'
GROUP BY
RQ
ORDER BY
RQ asc

结果:


问题:
由于4月11号没有数据,分组里列不出来

怎么才能把指定时间段的数据分组统计出来?
------解决思路----------------------
      SELECT ISNULL(SUM(d.je),0) AS je,
             t.rq
        FROM (
                SELECT DateAdd(day,number,'2014-04-08') rq
                  FROM master..spt_values
                 WHERE type = 'p'
                   AND number <= DateDiff(day,'2014-04-08','2014-04-14')
             ) t
   LEFT JOIN dllsd d
          ON t.rq = d.rq
       WHERE d.qddm = '4101'
    GROUP BY d.rq
    ORDER BY d.rq ASC

------解决思路----------------------
--我这边把开始和结束时间提取出来作参数,你如果不需要可以直接代进去
DECLARE @StartDate DATETIME,@EndDate DATETIME
SET @StartDate='20140408'
SET @EndDate='20140414'

SELECT ISNULL(T2.JE,0)JE
,DATEADD(DAY,T1.number,@StartDate)RQ
FROM master..spt_values T1
LEFT JOIN (
SELECT SUM(JE)AS JE,RQ FROM dllsd
WHERE rq BETWEEN @StartDate AND @EndDate AND QDDM = '4101'
GROUP BY RQ
) T2 ON DATEADD(DAY,T1.number,@StartDate)=T2.RQ
WHERE T1.type='P'AND T1.number<DATEDIFF(DAY,@StartDate,@EndDate)+1
  相关解决方案