示例:
ID CODE DOS
1. 58225111 2730 5/1/2013
2. 58225111 2730 6/1/2013
3. 58225111 2730 7/1/2013
4. 58225111 1930 8/1/2013
5. 58225111 2730 9/1/2013
6. 58225111 2730 10/1/2013
7. 58225111 2730 11/1/2013
8. 58225111 2730 12/1/2013
基本上,我想查询行号5,最新的CODE及其Min DOS如果有意义
我一直在摸索这个问题,我希望有人能指出我正确的方向。
答案 0 :(得分:1)
我想我明白你想要什么,尽管这个问题还不清楚。
您希望第一行包含最后一个代码,因此在您的示例数据中,它是第5行:58225111 2730 9/1/2013
因为它是最后一组行中的第一行相同的代码。
如果我误解了你的意图,请澄清。
此查询应该(可能)为您提供正确的结果。我确信有更好的方法来完成同样的事情,但这是我首先要做的事情。
;WITH AllRows (id, code, dos, r)
AS
(
SELECT id, code, dos, ROW_NUMBER() OVER(ORDER BY id ASC) AS r
FROM YourTable
)
SELECT * FROM AllRows
WHERE r = (
SELECT MAX(r)+1
FROM AllRows
WHERE
id != (SELECT TOP 1 id FROM YourTable ORDER BY dos DESC)
OR
code != (SELECT TOP 1 code FROM YourTable ORDER BY dos DESC)
)