SQL查询区分两列,Max(日期)和检索ID

时间:2015-07-08 18:15:13

标签: sql-server max distinct

我无法确定如何使此查询正常工作。我已经在阳光下尝试了一切以避免循环。

该表格包含ID(pk),UserIDBookIDBookDate(日期时间)和SellerIDUserIDBookID有重复的组合。

我正在尝试通过UserIDBookID检索具有最新BookDate的不同记录。这很容易(下面),但我还需要为返回的记录检索IDSellerID列。这就是我遇到麻烦的地方......

Select Distinct 
    UserID, CourseID, MAX(AssignedON) 
From 
    AssignmentS 
Group By 
    UserID, CourseID

每次添加联接时,我都会获得所有记录。我尝试过划船,存在,似乎什么都没有用。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

select userid,courseid,bookdate,sellerid from
 (select userid,courseid,bookdate,sellerid,
         row_number() over (partition by userid,courseid 
                            order by bookdate desc) as RNUM
   from yourtable where yourwhere)
  where rnum = 1;

答案 1 :(得分:0)

[本] [1]

[1]:http://coding.feron.it/2012/08/mssql-having-maxid-id-problem-row_number-partition/博文详细介绍了如何使用多个表格进行此操作

答案 2 :(得分:0)

想出来。我只需要移动一点东西,这是完美的!

从(选择用户ID,标签,书本,卖家)  选择* row_number()over(按用户ID分区,courseid,按bookdate desc排序)作为RNUM    从yourtable到哪里)   其中rnum = 1;