2011-07-27 43 views
0

有人在我公司写了一个封闭的存储过程,它给出了这些结果:如何找到最后一排有重复值的列

rowNumber userid DateCreated 
1    500 2011-07-20 11:03:24.590 
2    500 2011-07-21 11:03:24.590 
3    500 2011-07-22 11:03:24.590 
1    502 2011-07-20 11:03:24.590 
2    502 2011-07-21 11:03:24.590 
1    504 2011-07-20 11:03:24.590 
2    504 2011-07-21 11:03:24.590 

我不能改变它使用ROW_NUMBER原始查询,因此以上列表是我的只读数据源。

我需要它的最大ROWNUMBER以获得每个用户id完整的数据,即

3   500 2011-07-22 11:03:24.590 
2   502 2011-07-21 11:03:24.590 
2   504 2011-07-21 11:03:24.590 

,我不要再使用ROWNUMBER是很重要的。

回答

1
select t.* 
from 
(
    select userid, max(rownumber) m 
    from table 
    group by userid 
) c 
    inner join table t 
     on c.userid = t.userid and c.m = t.rownumber 
0
SELECT test.rownumber, test.userid, test.datecreated 
FROM test 
    INNER JOIN (SELECT MAX(rownumber) AS Expr1, userid 
       FROM test AS test_1 
       GROUP BY userid) AS t1 
    ON test.userid = t1.userid AND test.rownumber = t1.Expr1 
    ORDER BY test.userid 
相关问题