1

次のようなテーブルがあります。

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

その中に、日付と2つの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

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 に答える