3

私はSQLが苦手ではありませんが、これを理解するのに苦労しています。

という名前のテーブルがあり、testという名前の文字列と と という名前keyの 2 つのdatetime列がTestTimeありLastTestTimeます。

すべての行を更新し、同じの値をLastTestTime最新の値に設定するクエリを作成しようとしています。TestTimekey

これがどのようになりたいかの例です:

key   testTime   lastTestTime
------------------------------
aaa   1/1/2012   null
aaa   1/2/2012   1/1/2012
aaa   1/3/2012   1/2/2012
4

3 に答える 3

2

これらのどれも質問に答えませんでした。質問者は、全体的な最新ではなく、各テストの前に最新のテスト時間を求めています。

UPDATE test 
    SET lastTestTime = (SELECT TOP(1) testTime
                        FROM test tt
                        WHERE test.key = tt.key AND tt.TestTime < test.TestTime
                        ORDER BY testTime DESC
                       )              
于 2012-05-10T15:31:55.407 に答える
1
UPDATE t
SET LastTestTime = t2.TestTime
FROM
    Test t JOIN 
    Test t2 
        ON t2.[Key] = t.[Key]
        AND t2.TestTime = (
            SELECT MAX(t3.TestTime)
            FROM Test t3
            WHERE 
                t3.TestTime < t.TestTime
                AND t3.[Key] = t.[Key]
        )
于 2012-05-10T15:19:45.910 に答える
0
UPDATE test
SET lastTestTime = 
   (SELECT TOP(1) testTime 
    FROM test tt
    WHERE test.key = tt.key
    ORDER BY testTime DESC)
于 2012-05-10T15:20:09.180 に答える