c# - SQL如何将两个日期之间一小时内的事件求和并显示在一行中

标签 c# sql sql-server-2005 view count

我正在使用 C# 和 SQL Server 2005 开发一份报告, 我只需要显示我们每小时有多少命中。 table 很大。 输出应如下所示:

Row# |     Date    |  Time  | Hit Count
-----------------------------
1    | 07/05/2012  |  8:00  |  3
2    | 07/05/2012  |  9:00  |  4
3    | 07/05/2012  |  10:00 |  0
4    | 07/05/2012  |  11:00 |  5

我的表是这样的:

"HitTime":

07/05/2012 08:02:24
07/05/2012 08:12:21
07/05/2012 08:23:00
07/05/2012 09:01:00
07/05/2012 09:08:14
07/05/2012 09:12:31
07/05/2012 09:22:27

..等等 正如您在 HitTime 字段中看到的,我只有日期和时间,我需要在同一日期显示,例如从 8:00 到 8:59 我获得了多少点击,而且应该是一整天,从第一秒开始那天从第二天开始到结束。

最佳答案

DECLARE @current_date DATETIME

SET @current_date = '2012-05-07';

WITH    hours (hr) AS
        (
        SELECT  0
        UNION ALL
        SELECT  hr + 1
        FROM    hours
        WHERE   hr < 23
        )
SELECT  ROW_NUMBER() OVER (ORDER BY hr) AS rn,
        @current_date AS [date],
        CONVERT(VARCHAR(5), DATEADD(hour, h.hr, @current_date), 108) AS [time],
        COUNT(hs.hittime) AS hitcount
FROM    hours h
LEFT JOIN
        hits hs
ON      hs.hittime >= DATEADD(hour, h.hr, @current_date)
        AND hs.hittime < DATEADD(hour, h.hr + 1, @current_date)
GROUP BY
        hr

关于c# - SQL如何将两个日期之间一小时内的事件求和并显示在一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10618879/

相关文章:

c# - IEnumerator 或 IEnumerable 中的“产量”?

c# - 当程序在弱计算机上运行时,进度条不会更新

mysql - 从多个表插入到其他

sql-server - 如何使用 BCP 或 Sql Server Management Studio 从 Sql Server 中获取 BLOB 数据?

sql-server-2005 - SSIS 2005 - 忽略行插入失败

c# - 为 "staging"环境发布 Azure WebJob 时出错

mysql - SQL 加入多个条件

sql - 无法通过 SSMS 访问 MSDB 文件夹中的 SSIS 包

sql - 已知问题? : SQL Server 2005 stored procedure fails to complete with a parameter

c# - 当请求离开 asp :multiview or ajax 时,在 Response.End() 之后没有写入响应