如何根据条件选择查询
本文关键字:选择 查询 条件 何根 | 更新日期: 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
这样,您就不必硬编码从分数到排名的转换。