でなければなりません。私は列がChangedDate
日時とSomeValue
あなたの質問の第2列の任意の値と呼ばれると仮定します。あなたのサンプルについて
;WITH cte AS (
SELECT t.ChangedDate,
t.SomeValue,
p.ChangedDate as NextDate
FROM YourTable t
OUTER APPLY (
SELECT top 1 *
FROM YourTable
WHERE t.ChangedDate <ChangedDate
ORDER BY ChangedDate
) p
UNION ALL
SELECT DATEADD(minute,1,ChangedDate),
SomeValue,
NextDate
FROM cte
WHERE DATEADD(minute,1,ChangedDate) < NextDate
)
SELECT ChangedDate,
SomeValue
FROM cte
ORDER BY ChangedDate
OPTION (MAXRECURSION 0)
それの出力は以下となります。
ChangedDate SomeValue
2016-09-05 09:50:24.000 20
2016-09-05 09:51:24.000 20
2016-09-05 09:52:24.000 20
2016-09-05 09:53:24.000 20
2016-09-05 09:54:24.000 20
2016-09-05 09:55:24.000 20
2016-09-05 09:56:14.000 18
あなたは('2016-09-05 10:00:34', 17)
のような1つの以上の文字列を追加する場合は、出力は以下となります。
ChangedDate SomeValue
2016-09-05 09:50:24.000 20
2016-09-05 09:51:24.000 20
2016-09-05 09:52:24.000 20
2016-09-05 09:53:24.000 20
2016-09-05 09:54:24.000 20
2016-09-05 09:55:24.000 20
2016-09-05 09:56:14.000 18
2016-09-05 09:57:14.000 18
2016-09-05 09:58:14.000 18
2016-09-05 09:59:14.000 18
2016-09-05 10:00:14.000 18
2016-09-05 10:00:34.000 17
あなたは現在まで続くように、このログが必要な場合時間の変更部分:
p.ChangedDate as NextDate
この上のCTEで
:ここ
COALESCE(p.ChangedDate,GETDATE()) as NextDate
1つのオプションは、あなたが不足しているデータを埋めるために使用した日付/時刻表を持っているだろう。 –