日付と時刻を含むテーブルがあります。たとえば、列はDate
、、、、ExTime
です。正しい順序で表示する列に基づいて並べ替えています。NewTime
Status
expkey
extime
行ごとの比較を行い、2 番目の行 column を最初の行 columnと比較したいと考えていますNewTime
。extime < Newtime の場合status
、「1」で更新します。次に、テーブルを行ごとにトラバースします。上記の例の 2 行目が最初になり、新しい 2 行目がプルされて使用されます。これは私が今持っているもののサンプルですが、何らかの理由ですべての行にヒットして機能していません。
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 の。
この種の機能がすべてではなく、なぜ機能するのかを理解するための助けをいただければ幸いです。
広告。