我有一个包含日期和时间的表。例如列是Date
, ExTime
, NewTime
, Status
。我根据expkey
使它们以正确顺序显示的列对它们进行排序。
我想进行逐行比较并将第二行列extime
与第一行列进行比较NewTime
。如果 extime < Newtime 那么我想status
用“1”更新。然后逐行遍历表,上面示例中的第二行成为第一行,新的第二行被拉取并使用。这是我现在拥有的示例-但由于某种原因,它并没有击中并工作所有行。
UPDATE t
SET t.Status = 1
FROM MyTable t
CROSS APPLY (SELECT TOP 1 NewTime
FROM MyTable
WHERE ID = t.ID AND [Date] = t.[Date]
ORDER BY ExpKey) t1
WHERE t.Extime < t1.NewTime
这并没有像我想要的那样击中所有行。我有比较字段 ID 和日期的 where 子句,以确保这些行附加到同一个人。如果 ID 或日期不同,则它不会附加到同一个人,所以我不想更新状态。所以基本上如果第 2 行的 ID = 第 1 行的 ID 和第 2 行的日期 = 第 1 行的日期我想比较第 2 行的 extime 并查看它是否小于第 1 行的 newtime - 如果是,则更新状态字段第 2 行。
任何帮助弄清楚为什么这种工作但不是全部都将不胜感激。
广告。