在其他列值中查找一个列值的等级

时间:2014-08-17 18:12:43

标签: sql-server

我有一张下面格式的表格,

ID   Mark1  Mark2  Mark3   Rank_of_Mark1
1     85     80     77          1
1     65     80     70          3

我希望使用SQL Server获得Mark1的RANK以获得高分列表的其他标记

由于

1 个答案:

答案 0 :(得分:1)

测试数据

DECLARE @TABLE TABLE(ID INT, Mark1 INT, Mark2 INT, Mark3 INT)

INSERT INTO @TABLE VALUES 
(1, 85, 80, 77),          
(1, 65, 80, 70) 

查询

SELECT *
      ,1 + CASE WHEN Mark1 < Mark2 THEN 1 ELSE 0 END 
         + CASE WHEN Mark1 < Mark3 THEN 1 ELSE 0 END
        AS [Rank_of_Mark1] 
FROM @TABLE
KingKing建议

结果

╔════╦═══════╦═══════╦═══════╦═══════════════╗
║ ID ║ Mark1 ║ Mark2 ║ Mark3 ║ Rank_of_Mark1 ║
╠════╬═══════╬═══════╬═══════╬═══════════════╣
║  1 ║    85 ║    80 ║    77 ║             1 ║
║  1 ║    65 ║    80 ║    70 ║             3 ║
╚════╩═══════╩═══════╩═══════╩═══════════════╝

重要提示

我的解决方案无法处理两个列值相等的情况。您可以根据需要将><运算符替换为>=<=