1

我正在尝试为我正在处理的报告(SQL Server 2005)生成一些 SQL。基本上我试图报告一个时间段内每小时的登录次数。当没有记录时,我需要为小时部分返回零,并且与一天相同,如果给定日期没有记录,则在当天的 24 小时间隔内返回零。

到目前为止,我有 SQL 查询来返回特定日期的 24 小时间隔结果。我现在只是想扩展它以在多天(例如 1 周)内完成。希望我提供了足够的信息:P

我当前的代码是:

--Create the temp table to store the 24hr
Declare @Hours Table (Hour int);
Declare @i as int;
Set @i = 0
While @i < 24
Begin
   Insert into @Hours
   Values(@i);

   Set @i = @i + 1;
End;

Select  
   [Hour of Day],
   count([Login]) as [total]

From
(
   SELECT       
      DATEPART(hh, [date] )  AS [Hour of Day]
      ,activity_log.date as [Login]
   FROM activity_log
   where 
   category = 'Login' 
   and description like '%logged in%'
   and[date] between '2012/06/01' and '2012/06/02'
   Union ALL

   SELECT Hour, NULL

   From @Hours

 ) as Data

 GROUP BY [Hour of Day]

 ORDER BY [Hour of Day]

我已经包含了我想要实现的示例结果的附件。

样本结果

4

0 回答 0