1

作業中のレポート用に SQL を生成しようとしています (SQL Server 2005)。基本的に、時間枠内の 1 時間あたりのログイン数を報告しようとしています。レコードがない場合は、時間コンポーネントにゼロを返す必要があります。また、特定の日のレコードがない場合は、その日の 24 時間間隔にゼロを返す必要があります。

これまでのところ、特定の日の 24 時間間隔の結果を返す SQL クエリがあります。私は今それを拡張して、数日(たとえば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