我正在尝试创建一些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