如果我您的要求理解正確,那就是:
給我最近的記錄,其中用戶得分低於200
下面的代碼顯示的每個用戶例如實現這一目標:
DECLARE @tabTestResults TABLE
(
UserId INT,
TestDate DATE,
Result INT
)
INSERT
INTO @tabTestResults
(
UserId,
TestDate,
Result
)
VALUES (1, '2015-01-01', 180),
(1, '2015-07-23', 200),
(1, '2015-08-23', 190),
(1, '2015-09-23', 210),
(2, '2015-01-01', 210),
(2, '2015-10-23', 190),
(3, '2015-10-23', 170),
(4, '2015-10-23', 220)
SELECT UserId, TestDate, Result
FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY UserId ORDER BY TestDate DESC) AS RowNumber, *
FROM @tabTestResults
WHERE Result < 200
) SQ
WHERE RowNumber = 1
返回:
UserId TestDate Result
1 2015-08-23 190
2 2015-10-23 190
3 2015-10-23 170
來源
2015-10-23 13:26:09
Rob
不能想象你在問什麼。請用示例數據和期望的結果來說明。 –