比较排名结果与其自身,如果相等则在其后附加一个“ =”

时间:2019-07-17 02:49:55

标签: mysql 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”

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