以下に示すような連続的な状態データを持つテーブルからデータを引き出すSQLクエリが必要です。ある時間窓のデータを1時間/ 1日というように取得したい場合は、レコードをフィルタリングして状態情報をピボットする必要があります。 ':50:2016年8月11日23 00.000' FROM:TO前後の行
フィルタ '2016年8月13日01:15:00.000' - 85分
フィルタbelow-黄色で強調表示されるよう以下の通りです -
私は、次のフィルタを与えた場合、その後、
DECLARE @StartDate DATETIME = '2016-08-11 23:50:00.000'
DECLARE @EndDate DATETIME = '2016-08-15 01:15:00.000'
理想的には、それのように、時間窓を検討すべきである -
2016-08-11 23:50:00 to 2016-08-12 01:15:00 - 85 minutes
2016-08-12 23:50:00 to 2016-08-13 01:15:00 - 85 minutes
2016-08-13 23:50:00 to 2016-08-14 01:15:00 - 85 minutes
2016-08-14 23:50:00 to 2016-08-15 01:15:00 - 85 minutes
2016-08-15 23:50:00 to 2016-08-16 01:15:00 - 85 minutes
など....
UPDATE 3
は、誰かがこのクエリで私を助けることができますか?
サンプルデータ -
create table #temp1 ([State] varchar(20),StartTimeStamp Datetime2, EndTimeStamp Datetime2, DurationInSeconds int)
Insert into #temp1 values('Away', '2016-08-11 23:40:00.000000', '2016-08-11 23:45:00.000000', 300 )
,('Appear Away','2016-08-11 23:45:00.000000', '2016-08-11 23:50:00.000000', 300)
,('Available', '2016-08-11 23:50:00.000000', '2016-08-11 23:55:00.000000', 300)
,('Available','2016-08-11 23:55:00.000000', '2016-08-11 23:59:59.000000', 299)
,('Away', '2016-08-12 00:00:00.000000', '2016-08-12 00:05:00.000000', 300)
,('Offline', '2016-08-12 00:05:00.000000', '2016-08-12 00:15:00.000000', 600)
,('Away', '2016-08-12 00:15:00.000000', '2016-08-12 00:30:00.000000', 900)
,('Appear Away','2016-08-12 00:30:00.000000', '2016-08-12 01:15:00.000000', 2700)
,('Away', '2016-08-12 01:15:00.000000', '2016-08-12 01:30:00.000000', 900)
,('Offline', '2016-08-12 01:30:00.000000', '2016-08-12 18:30:00.000000', 64800)
,('Appear Away','2016-08-12 18:30:00.000000', '2016-08-12 23:30:00.000000', 18000)
,('Available', '2016-08-12 23:30:00.000000', '2016-08-12 23:45:00.000000', 900)
,('Away', '2016-08-12 23:45:00.000000', '2016-08-12 23:50:00.000000', 300)
,('Offline', '2016-08-12 23:50:00.000000', '2016-08-12 23:55:00.000000', 300)
,('Available', '2016-08-12 23:55:00.000000', '2016-08-12 23:59:59.000000', 299)
,('Away', '2016-08-13 00:00:00.000000', '2016-08-13 00:05:00.000000', 300)
,('Offline', '2016-08-13 00:05:00.000000', '2016-08-13 00:15:00.000000', 600)
,('Away', '2016-08-13 00:15:00.000000', '2016-08-13 00:30:00.000000', 900)
,('Appear Away','2016-08-13 00:30:00.000000', '2016-08-13 01:15:00.000000', 2700)
,('Away', '2016-08-13 01:15:00.000000', '2016-08-13 01:30:00.000000', 900)
アップデート2:予想される出力:
質問を編集して、取得したい結果を表示してください。また、赤い線を説明するかもしれません。それはどういう意味ですか? –
期待した結果を表示してください。 – NEER
@GordonLinoffの質問への変更 –