排名结果:手动打破领带

时间:2015-05-27 21:33:46

标签: sql-server-2008 ranking

我使用了此页面:Ranking Criteria

写这个:

with cte as (
Select t.[Client ID]
      ,t.[Location]
      ,Count(t.[Location]) [Loc Count]
FROM #tmp_PCL_coreData t
Group By  t.[Client ID]
        , t.[Location])

Select *
      ,(SELECT COUNT(*) FROM cte b
        WHERE a.[Client ID] = b.[Client ID] AND a.[Loc Count] <= b.[Loc Count]) [Rank]
FROM cte a

它适用于为每个[Client ID]提供排名位置。唯一的缺点是,当每个[Loc Count]的{​​{1}}相同时,每个的排名都相同。在我的特定情况下,我需要任意分配一个或另一个“更好”的等级。关于如何实现这一目标的任何想法?

示例:

enter image description here

你可以看到Client 60756在Redmond和Bellevue各有一个,两个值都是Rank 2.要么我的目的可以是Rank 1,但我肯定需要等级1.现在,它对我来说很有意义按字母顺序分配等级1,这样如果我稍后提出一个更好的打破平局标准,我就可以看到在哪里构建逻辑。

0 个答案:

没有答案