1

我有一张如下表:

DECLARE @tmp TABLE
    (
    userID int,
    testID int,
    someDate datetime
    )

在其中我存储日期以及两个 ID 值,例如

INSERT INTO @tmp (userID, testID, someDate) VALUES (1, 50, '2010-10-01')
INSERT INTO @tmp (userID, testID, someDate) VALUES (1, 50, '2010-11-01')
INSERT INTO @tmp (userID, testID, someDate) VALUES (1, 50, '2010-12-01')
INSERT INTO @tmp (userID, testID, someDate) VALUES (2, 20, '2010-10-01')
INSERT INTO @tmp (userID, testID, someDate) VALUES (2, 20, '2010-11-01')

我需要为每个 userID/testID 组合选择最新日期。所以,结果将是

userID  testID  someDate
1       50      2010-12-01
2       20      2010-11-01

这听起来很容易,但我无法弄清楚。SQL 小提琴在这里

4

3 回答 3

2
SELECT userID, testID, MAX(someDate)
FROM @tmp
GROUP BY testId,userID;

小提琴

于 2013-07-02T10:54:46.823 回答
0
SELECT userId, testId, MAX(someDate)
FROM @tmp
GROUP BY testId, userId

http://www.sqlfiddle.com/#!6/d41d8/5205

于 2013-07-02T10:46:33.900 回答
0

尝试

SELECT t1.* FROM @tmp t1
INNER JOIN (SELECT userId, MAX(someDate) someDate
            FROM @tmp
            GROUP BY userId) t2
        ON t1.userId = t2.userId
       AND t1.someDate = t2.someDate
于 2013-07-02T10:50:10.013 回答