我是SQL和DATABASE学习的新手,试图解决以下数据库问题:
我们有一个包含两个列名和标记的表。根据此表写一个查询,如果大于700,则返回等级,如果小于700且大于500则返回'A',它将是'B'或它将是'C'。主点表只有两列。
以下是查询:
CREATE TABLE class (name varchar(20),marks int);
INSERT INTO class VALUES ("anu",1000),("abhi",100),("mittal",800),("chanchal",1200),("gurpreet",750),("somesh",1000),("sonia",600),("khushbu",450),("rashi",1100),("jyoti",550);
Select * FROM class;
显示如下表:
| name | marks |
| anu | 1000 |
| abhi | 100 |
| mittal | 800 |
| chanchal | 1200 |
| gurpreet | 750 |
| somesh | 1000 |
| sonia | 600 |
| khushbu | 450 |
| rashi | 1100 |
| jyoti | 550 |
SELECT * FROM class where Grade =(SELECT CASE WHEN marks >700 THEN "A" WHEN marks<700 and marks<700 THEN "B" ELSE "C" END as GRADE FROM class);
显示以下错误:
错误1242(21000):子查询返回超过1行
需要最后一个命令的帮助。
答案 0 :(得分:0)
select name ,
CASE WHEN marks >700 THEN 'A' WHEN marks<700 and marks<700 THEN 'B' ELSE 'C' END as GRADE
from class
上述查询应满足您的需求,这将根据您设置的标准显示名称和成绩。 我希望通过SQL你的意思是Sql Server。