我正在尝试创建一些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”
答案 0 :(得分:0)
我使用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