如何根据条件选择查询

时间:2014-12-04 05:04:46

标签: c# sql asp.net-mvc stored-procedures

在我的数据库表中,我有

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

怎么可能?通过程序,查询或gridview行数据绑定?

1 个答案:

答案 0 :(得分:2)

您可以执行类似的操作将字符串转换为数字然后再转换回来:

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

这样你就不必硬编码从得分到等级的转换。