应该是方法2快的,不过确实没做过测试如果楼主的显示格式没什么要求的话,可以这样select datepart(hh,appdate) as 时间,count(id) as 数量 from tb1 group by datepart(hh,appdate)

解决方案 »

  1.   

    一个查询返回结果集不就完了吗?select
        hh  = datepart(hh,appdate),
        num = count(*)
    from
        tb1
    group by
        datepart(hh,appdate)
      

  2.   

    libin_ftsafe(子陌红尘) 的方法就很好了。
      

  3.   

    libin_ftsafe(子陌红尘) 是高手呀!
      

  4.   

    libin_ftsafe(子陌红尘) 的方法是很好,可有个问题,按这种方法不能列出24个时段的数据(如果某个时段没有注册用户则显示 0)
      

  5.   

    SELECT
        a.[HOUR],
        ISNULL(b.[NUM],0)
    FROM
        (SELECT 1 AS [HOUR] 
         UNION SELECT 2 
         UNION SELECT 3 
         UNION SELECT 4 
         UNION SELECT 5 
         UNION SELECT 6
         UNION SELECT 7 
         UNION SELECT 8 
         UNION SELECT 9 
         UNION SELECT 10
         UNION SELECT 11 
         UNION SELECT 12) a
    LEFT JOIN
        (SELECT
             [HOUR] = DATEPART(HH,appdate),
             [NUM]  = COUNT(*)
         FROM
             tb1
         GROUP BY
             DATEPART(HH,appdate)) b
    ON
        a.[HOUR] = b.[HOUR]
      

  6.   

    SELECT
        a.[HOUR],
        ISNULL(b.[NUM],0)
    FROM
        (SELECT 0 AS [HOUR]
         UNION SELECT 1
         UNION SELECT 2
         UNION SELECT 3
         UNION SELECT 4
         UNION SELECT 5
         UNION SELECT 6
         UNION SELECT 7
         UNION SELECT 8
         UNION SELECT 9
         UNION SELECT 10
         UNION SELECT 11 
         UNION SELECT 12
         UNION SELECT 13
         UNION SELECT 14
         UNION SELECT 15
         UNION SELECT 16
         UNION SELECT 17
         UNION SELECT 18
         UNION SELECT 19
         UNION SELECT 20
         UNION SELECT 21
         UNION SELECT 22 
         UNION SELECT 23) a
    LEFT JOIN
        (SELECT
             [HOUR] = DATEPART(HH,appdate),
             [NUM]  = COUNT(*)
         FROM
             tb1
         GROUP BY
             DATEPART(HH,appdate)) b
    ON
        a.[HOUR] = b.[HOUR]