我有一张下面格式的表格,
ID Mark1 Mark2 Mark3 Rank_of_Mark1
1 85 80 77 1
1 65 80 70 3
我希望使用SQL Server获得Mark1的RANK以获得高分列表的其他标记
由于
答案 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 ║
╚════╩═══════╩═══════╩═══════╩═══════════════╝
重要提示
我的解决方案无法处理两个列值相等的情况。您可以根据需要将>
或<
运算符替换为>=
或<=
。