sqlserver 根據某個字段去重

根據某個字段排序分組:

  select  row_number() over ( PARTITION BY 重複的字段名 ORDER BY 根據主要的ID字段名 DESC ) dsnamesnum
dsnamesnum:表示新增的列名
select *  from (
                select  row_number() over ( PARTITION BY LName ORDER BY PID DESC ) dsnamesnum,*  from (
            select row_number() over ( PARTITION BY a.PID ORDER BY a.PtID DESC ) distinctnum        ,c.Names as pro_Namesfrom table1 a left join table2 c on c.ID=a.Name left join table3 d on d.PID=a.PID left join table4 e on e.AID=d.AID left join table5 f on f.MID=d.MID where d.AID=151 and f.IsLock=0 and f.State=1 ) TanleOne where distinctnum=1 //--上層table裏row_number() over 根據倒序查詢出來distinctnum的結果是1++,1就是最新數據,所以=1
) TableTwo where dsnamesnum=1  //--上層table裏row_number() over 根據倒序查詢出來dsnamesnum的結果是1++,1就是最新數據,所以=1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章