次の情報を含むテーブルがあります。
Conf_Start_Time
Part_Start_Time
Part_End_Time
Part_Start_Time
t が から の間にある場合、レコードは時刻 t でアクティブであると見なされますPart_End_Time
。
私がやりたいのは、すべてのレコードを分析して、指定された日にアクティブなレコードの数を判断することです。私が提案する解決策は、1 日の各分 (たとえば、午前 6 時から午後 9 時まで) をループし、その日の各レコードをチェックして、指定された時刻 t にユーザーがアクティブであったかどうかを判断することです。
SQLでこれに対する解決策はありますか、それともコードの解決策を進める必要がありますか?
コードでは、すべてのレコードをメモリにプルし、時間 (午前 6 時から午後 9 時まで) をループし、指定された日の各レコードをテストして、現在の時間にアクティブかどうかを判断します。アクティブな場合はカウンターをインクリメントし、そうでない場合は次のレコードに進みます。次回は、カウンターを再初期化し、その日をループします。
SQL Server 2005 を使用しています。
更新: 私が探している出力は、午前 6 時から午後 9 時までの最大同時使用量の配列です。
Record Conf_Start_Time Part_Start_Time Part_End_Time
1. 6/5/2012 13:40:00 6/5/2012 13:41:23 6/5/2012 13:45:27
2. 6/5/2012 13:40:00 6/5/2012 13:40:23 6/5/2012 13:47:29
3. 6/5/2012 13:40:00 6/5/2012 13:42:55 6/5/2012 13:44:17
したがって、13:40:00 の時点でアクティブなレコードは 0 です。時刻 13:41:00 に 1 つのレコードがアクティブです。時刻 13:42:00 に 2 つのレコードがアクティブです。13:43:00 の時点で 3 つのレコードがアクティブです。
そして、1 日の 1 分ごとのデータが必要です。そして、その月の毎日。このタイプのループは SQL でも実行できますか?