日付、時刻、価格の3つの列で構成されるテーブルがあります。「時間」列はほぼ分間隔ですが、すべての分間隔が表示されるわけではありません。Date、FlooredTime、LastPriceInIntervalで構成される新しいテーブルを作成したいと思います。ここで、FlooredTime =各10分間隔の開始時の時間であり、LastPriceInIntervalは各間隔内の利用可能な最大時間での価格です。
Old Table: New Table:
Date Time Price Date FlooredTime LastPriceInInterval
2012-05-10 02:50:00 1352.7 2012-05-10 02:40:00 1353.0
2012-05-10 02:46:00 1353.0 2012-05-10 02:30:00 1353.5
2012-05-10 02:45:00 1352.8
2012-05-10 02:44:00 1353.2
2012-05-10 02:43:00 1353.1
2012-05-10 02:42:00 1353.2
2012-05-10 02:40:00 1353.4
2012-05-10 02:39:00 1353.5
2012-05-10 02:38:00 1354.6
2012-05-11 03:31:00 1355.0
2012-05-11 03:29:00 1354.0
これは私が今まで持っていたものですが、今は行き詰まっています。内部のselectステートメントはwhere句でのMaxの使用を好まないようです。Max(datepart(minute、m1.Time)%10)。許可された構文を使用して目的の結果を達成する方法を知っていただければ幸いです。
SELECT TOP 1000 Date
,DATEADD(minute,-DATEPART(minute,Time)%10 ,Time) as FlooredTime
,(Select Price from dbo.MyData
where m3.Date = m1.Date
and DATEPART(hour, m3.Time) = DATEPART(hour, m1.Time)
and datepart(minute,m3.Time)/10 = Floor(datepart(minute,m1.Time)/10)
and datepart(minute,m3.Time)%10 = Max(datepart(minute,m1.Time)%10)
) as LastPriceInInterval
FROM dbo.MyData
where DATEPART(minute,Time)%10 = 0
order by Date Desc, Time Desc
ありがとう!
後期編集-後で結果をMerge式のソーステーブルとして使用します。