我使用了此页面: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}}相同时,每个的排名都相同。在我的特定情况下,我需要任意分配一个或另一个“更好”的等级。关于如何实现这一目标的任何想法?
示例:
你可以看到Client 60756在Redmond和Bellevue各有一个,两个值都是Rank 2.要么我的目的可以是Rank 1,但我肯定需要等级1.现在,它对我来说很有意义按字母顺序分配等级1,这样如果我稍后提出一个更好的打破平局标准,我就可以看到在哪里构建逻辑。