SQL 服务器中的多列排名

Multi-column Rank in SQL Server

可能有,但我对 SQL 服务器有点陌生。我需要 rank/denserank 一个数据集,但排名是基于 6 列的。我现在拥有的是:

SELECT  col1, col2, col3, col4, col5, col6, col7,
    RANK() OVER(ORDER BY col2 desc) as APPLICANT_RANK 
FROM    myTable

这样可以正常工作,但是如果 col2 中有平局,那么我会得到两条排名相同的记录。我想要的是,如果 col2 中有平局,则在 col3 中查看更高的数字,然后在 col4 中查看,所以向下看 col 6。

谢谢

您可以在 rank 函数的 order by 子句中包含多个列,就像您对整个查询的结果进行排序一样:

RANK() OVER(
   ORDER BY col2 desc,col3 desc, col4 desc, col5 desc, col6 desc
) as APPLICANT_RANK