次のような単純化されたデータベースがあります。
ID | SecondID | DateRecorded | NumberToCheck | NumberToUpdate
NumberToUpdate
現在、すべての行の値が 0 です。
NumberToUpdate
同じ行の の値で更新したいのですNumberToCheck
が、MINUS の値NumberToCheck
は最も古いDateRecorded
" (Min(DateRecorded)
" で、NumberToCheck
は 0 より大きく、元の行と同じ ID と secondID を持っています。
これまでのところ、
UPDATE dbo.Table
SET NumberToUpdate =//Update NumberToUpdate
NumberToCheck - //NumberToCheck from the current row, subtracting...
(SELECT TOP 1 t2.NumberToCheck FROM Table t2 WHERE ID = t2.ID AND secondID = t2.secondID AND t2.DateRecorded =
(SELECT TOP 1 MIN(t3.DateRecorded) FROM Table t3 WHERE t2.ID = t3.ID AND t2.secondID = t3.secondID AND t3.Passes > 0))
//the NumberToCheck with the earliest date, of the same ID.
ただし、これは正しくなく、意味のない値を返しています (マイナス値があってはならないものも含まれています!)。
ここで私は何を忘れましたか?
どうもありがとう