Sqlserver 按照时间段统计数据

  WITH  t1 ( [hour], title )
          AS ( SELECT   0 ,
                        ' 0:00:00--- 1:00:00'
               UNION ALL
               SELECT   1 ,
                        ' 1:00:00--- 2:00:00'
               UNION ALL
               SELECT   2 ,
                        ' 2:00:00--- 3:00:00'
               UNION ALL
               SELECT   3 ,
                        ' 3:00:00--- 4:00:00'
               UNION ALL
               SELECT   4 ,
                        ' 4:00:00--- 5:00:00'
               UNION ALL
               SELECT   5 ,
                        ' 5:00:00--- 6:00:00'
               UNION ALL
               SELECT   6 ,
                        ' 6:00:00--- 7:00:00'
               UNION ALL
               SELECT   7 ,
                        ' 7:00:00--- 8:00:00'
               UNION ALL
               SELECT   8 ,
                        ' 8:00:00--- 9:00:00'
               UNION ALL
               SELECT   9 ,
                        ' 9:00:00--- 10:00:00'
               UNION ALL
               SELECT   10 ,
                        ' 10:00:00--- 11:00:00'
               UNION ALL
               SELECT   11 ,
                        ' 11:00:00--- 12:00:00'
               UNION ALL
               SELECT   12 ,
                        ' 12:00:00--- 13:00:00'
               UNION ALL
               SELECT   13 ,
                        ' 13:00:00--- 14:00:00'
               UNION ALL
               SELECT   14 ,
                        ' 14:00:00--- 15:00:00'
               UNION ALL
               SELECT   15 ,
                        ' 15:00:00--- 16:00:00'
               UNION ALL
               SELECT   16 ,
                        ' 16:00:00--- 17:00:00'
               UNION ALL
               SELECT   17 ,
                        ' 17:00:00--- 18:00:00'
               UNION ALL
               SELECT   18 ,
                        ' 18:00:00--- 19:00:00'
               UNION ALL
               SELECT   19 ,
                        ' 19:00:00--- 20:00:00'
               UNION ALL
               SELECT   20 ,
                        ' 20:00:00--- 21:00:00'
               UNION ALL
               SELECT   21 ,
                        ' 21:00:00--- 22:00:00'
               UNION ALL
               SELECT   22 ,
                        '22:00:00---23:00:00'
               UNION ALL
               SELECT   23 ,
                        '23:00:00---24:00:00'
             ),
        t2
          AS ( SELECT   DATEPART(HOUR, OperateTime) [hour] ,
                        COUNT(1) AS number -- 这些字段该怎么算自己调整
               FROM     [MeiDongPay].[dbo].[PayOrderInfo_Midst]
               WHERE    OperateTime BETWEEN '2017-07-14 0:00:00'
                                    AND     '2017-07-14 23:59:59.998'
               GROUP BY DATEPART(HOUR, OperateTime)
             )
    SELECT  t1.title ,
            t2.number
    FROM    t1
            LEFT JOIN t2 ON t1.[hour] = t2.[hour]
    ORDER BY t2.number
原文地址:https://www.cnblogs.com/password1/p/7193459.html