3

我对 SQL 并不差,但我很难弄清楚这一点。

我有一个名为 的表test,其中有一个名为的字符列key和两个datetime名为TestTimeand的列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 回答