特定の期間 (通常は 15 分) の間に含まれるレコードの数を数えようとしていますが、この間隔を変数にしたいと考えています。私のテーブルには datetime 列があり、2 つの日付間の 15 分間隔ごとにレコード数のカウントを取得する必要があり、15 分のウィンドウにレコードがない場合は、その期間がゼロである必要があります。CTE をさまざまな組み合わせで使用しようとしましたが、機能しませんでした。CTE を使用して日付系列を生成できますが、結果の実際のデータを取得できませんでした。WHILE ループを含むストアド プロシージャを使用した実用的なソリューションがあります。可能であればこれを回避するか、よりエレガントなソリューションを望んでいました。
一時テーブルを使用した作業ループは次のとおりです。
declare @record_count int = 0
declare @end_date_per_query datetime
create table #output (
SessionIdTime datetime,
CallCount int)
while @date_from < @date_to
begin
set @end_date_per_query = DATEADD(minute, @interval, @date_from)
select @record_count = COUNT(*) from tbl WHERE SessionIdTime between @date_from and @end_date_per_query
insert into #output values (@date_from, @record_count)
set @date_from = @end_date_per_query
end
select * from #output order by sessionIdTime
drop table #output
誰かがよりエレガントなソリューションを手伝ってくれることを願っています。どんな助けでも大歓迎です。