代码之家  ›  专栏  ›  技术社区  ›  user4242750

SQL Server分区顺序-即使行相同,也没有tie DenseRank值

  •  -1
  • user4242750  · 技术社区  · 7 年前

    enter image description here

    select *
    ,Dense_RANK() over (partition by [Assignment] order by [Text] desc) as 
    [DenseRank]
     from  [dbo].[CLEANSED_T3B_Step1_Res_Withdups____CP]
    
    
    
    
    select * from
    (
    select *
    ,Dense_RANK() over (partition by [Assignment] order by [Text] desc, NewID() 
    ) as [DenseRank] from  [dbo].[CLEANSED_T3B_Step1_Res_Withdups____CP]
     ) as A
     where A.[DenseRank] = 1
    

    第二个脚本工作得很好!

    SELECT * INTO 
    [dbo].[CLEANSED_T3B_Step1_COMPLETED]
    from
    (
      select *
        ,Dense_RANK()                   over (partition by [Assignment] order by 
     left([Text],1) desc , [Diff_Doc_Clearing_Date] desc , [Amount] asc
    as [DenseRank] 
     from  [dbo].[CLEANSED_T3B_Step1_Res_Withdups____CP] 
     )  
    as A
     where A.[DenseRank] = 1
    

    不再需要一个随机的第一个并列的“第一位”,现在需要得到一个与最高的日差异,然后也是最高金额后。因此,我们改编了第3版中的所有内容。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Tim Schmelter    7 年前

    看来你不想用 DENSE_RANK 但是 ROW_NUMBER

    with cte as(
       select t.*, rn = row_number() over(partition by assignment order by [text] desc) 
       from tablename t
    )
    select * from cte 
    where rn = 1
    
        2
  •  1
  •   JPF    7 年前

    按“newid()”作为“平局破坏者”排序

    Order by [Text],Newid()