作業中のレポート用に 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]
私が達成しようとしているサンプル結果の添付ファイルを含めました。