クエリ:
SQLFIDDLE例
with table5
as (
SELECT Date,
[Worked Hours],
IsLate,
ROW_NUMBER() OVER (ORDER BY Date ASC, [Worked Hours] ASC) AS RowNumber1
FROM Table1
)
SELECT t1.Date,
t1.[Worked Hours],
t1.IsLate,
CASE WHEN LEFT(t2.[Worked Hours],2) = '10'
THEN 'Equal'
ELSE 'Not Equal' END AS isequal
FROM table5 t1
LEFT JOIN table5 t2
ON t1.RowNumber1 - 1 = t2.RowNumber1
結果:
| DATE | WORKED HOURS | ISLATE | ISEQUAL |
|-------------------------------|--------------|--------|-----------|
| August, 01 2013 00:00:00+0000 | 8:03:00 | No | Not Equal |
| August, 02 2013 00:00:00+0000 | 10:52:00 | No | Not Equal |
| August, 03 2013 00:00:00+0000 | 8:43:00 | Yes | Equal |
| August, 04 2013 00:00:00+0000 | 9:26:00 | No | Not Equal |
テーブルを更新するだけの場合は、これを使用します:
SQLFIDDLE例
UPDATE Table1
SET [IsLate] = ISNULL((SELECT TOP 1 CASE WHEN LEFT(t1.[Worked Hours],2) = '10'
THEN 'Equal'
ELSE 'Not' END
FROM Table1 t1
WHERE t1.Date < Table1.Date
ORDER BY t1.Date DESC), 'Not')
結果:
| DATE | WORKED HOURS | ISLATE |
|-------------------------------|--------------|--------|
| August, 01 2013 00:00:00+0000 | 8:03:00 | Not |
| August, 02 2013 00:00:00+0000 | 10:52:00 | Not |
| August, 03 2013 00:00:00+0000 | 8:43:00 | Equal |
| August, 04 2013 00:00:00+0000 | 9:26:00 | Not |