0

我是 SQL 和 DATABASE 学习的新手,试图解决以下数据库问题:

我们有一个包含两个列名和标记的表。根据该表编写一个查询,返回分数,例如如果分数大于 700,则为“A”,如果小于 700,大于 500,则为“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); 

它显示以下错误:

ERROR 1242 (21000):子查询返回多于 1 行

最后一个命令需要帮助。

4

1 回答 1

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。

于 2013-09-04T05:55:23.647 回答