観測テーブルからの結果をグループ化しようとしています。私のテーブルには、数秒ごとに株価が含まれています。2 時間ごと、4 時間ごと、8 時間ごとなど、株式に関する集計情報を表示できるようにしたいのですが、これらの期間は午後 5 時に開始する必要があります。たとえば、データが 2012-05-23 17:45:34 に始まる場合、最初の観測は 23 日の 17:00:00 から 23 日の 19:00:00 までというようになります。時間間隔に基づいてデータをグループ化できますが、開始を午後 5 時に設定する方法がわかりません..
質問する
138 次
1 に答える
0
where
句に条件を追加してみませんか。(日時から) 時間を取り、17:00:00 より大きいことを確認します。午後 5 時より前の場合は、計算に使用しないでください。
編集すでにグループ化が完了していると述べました。where句にサブクエリを追加する最終日の午後5時に開始するのはどうですか(構文がわからない):
where datetimeCol >= (select min(date(datetimeCol) + time(5pm)) from tableUsed where previousUsedConditions or id = outerTable.Id)
編集
より複雑なグループ化があることは知っていますが、(tsql では) これは、where ステートメントを使用して私が念頭に置いていたことです。
declare @tempTable table (mydate smalldatetime)
insert into @tempTable
values('2012-05-23 04:37:04.900'),
('2012-05-23 18:37:04.900'),
('2012-05-24 04:37:04.900'),
('2012-05-25 05:37:04.900')
select *
from @tempTable as tbl
group by mydate
select (cast(cast((select min(temp.myDate) from @tempTable as temp) as DATE) as datetime) + cast(cast( '17:00:00.0000000' as time)as datetime)) as 'This is the time that is getting filtered by below'
select *
from @tempTable as tbl
where tbl.mydate > (cast(cast((select min(temp.myDate) from @tempTable as temp) as DATE) as datetime) + cast(cast( '17:00:00.0000000' as time)as datetime))
これにより、次の結果が得られます。
(4 row(s) affected)
mydate
-----------------------
2012-05-23 04:37:00
2012-05-23 18:37:00
2012-05-24 04:37:00
2012-05-25 05:37:00
(4 row(s) affected)
This is the time that is getting filtered by below
--------------------------------------------------
2012-05-23 17:00:00.000
(1 row(s) affected)
mydate
-----------------------
2012-05-23 18:37:00
2012-05-24 04:37:00
2012-05-25 05:37:00
(3 row(s) affected)
于 2012-05-23T19:38:03.370 に答える