我正在尝试创建一些SQL,该SQL说一列的等级是否相同,以'='附加它

我尝试使用一个case语句来找到相同的结果,但是显然这只是在查找同一列,并且总是以true出现。

提供给我存储在临时表中的等级的代码。

 RANK ( ) OVER ( partition by ac.line_id order by cast(stm.mark as int) DESC) ,
 COUNT(*) OVER (PARTITION BY ac.line_id) as total_mark_rank,


在我的最终查询中,我正在使用以下内容。

SELECT

CASE
WHEN
wsa.total_mark_rank= wsa.total_mark_rank
THEN  '=' + wsa.total_mark_rank
 ELSE wsa.total_mark_rank end

from wsa


我希望两个人的排名都为“ 1”,他们都将显示为“ = 1”。当前与我的查询,他们都显示为“ = 1”

最佳答案

我已经使用person_id作为商标所属的标识符。

您可以使用自我联接。它只是查找具有相同person_id的另一个total_mark_rank,如果存在,则在该排名前添加等号。如果不是,则按原样排名。

SELECT DISTINCT  wsa.person_id,
                 CASE WHEN wsa2.total_mark_rank IS NULL
                      THEN CAST(wsa.total_mark_rank AS VARCHAR(4))
                      ELSE '=' + CAST(wsa2.total_mark_rank AS VARCHAR(4))
                 END As rank_position
FROM   wsa
       LEFT JOIN wsa wsa2 ON wsa2.total_mark_rank = wsa.total_mark_rank
                             AND wsa2.person_id <> wsa.person_id

08-04 23:23