我是SQL和DATABASE学习的新手,试图解决以下数据库问题:
我们有一个带有两个列名称和标记的表。根据该表编写一个查询,该查询返回的分数例如,如果分数大于700,则小于等于700,大于500,则为“ A”,或者为“ 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
需要最后一条命令的帮助。
最佳答案
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。
关于sql - SQL查询错误:子查询返回多个行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18606241/