如何根据条件选择查询

本文关键字:选择 查询 条件 何根 | 更新日期: 2023-09-27 18:33:13

在我的数据库表中,我有

NAME   SCORE 
---------------
RAJ     GOLD   
MAYA    SILVER
RAJ     BRONZE
MAYA    GOLD
RAJ     SILVER
HARI    SILVER

其中最高分按GOLD,SILVER,BRONZE顺序排列。

在此表中,我想在网格视图中显示每个人的最高分。

输出应为:

NAME   SCORE 
----------------  
RAJ     GOLD  
MAYA    GOLD
HARI    SILVER

怎么可能?通过过程、查询或网格视图行数据绑定?

如何根据条件选择查询

您可以执行以下操作将字符串转换为数字并再次返回:

SELECT NAME, 
CASE WHEN MINSEQ=1 THEN 'GOLD'
     WHEN MINSEQ=2 THEN 'SILVER' 
     ELSE 'BRONZE'
END
FROM
(select NAME,
MIN(CASE WHEN SCORE='GOLD' THEN 1 WHEN SCORE='SILVER' THEN 2 ELSE 3 END) AS MINSEQ
FROM TABLE
GROUP BY NAME) AS T

更好的解决方案是为另一个表中的每个分数分配一个数字并连接到该表。

SCORE  RANK
GOLD    1
SILVER  2
BRONZE  3

这样,您就不必硬编码从分数到排名的转换。