0

私は、次のデータベースの問題を解決しようとしている、SQL とデータベースの学習の初心者です。

2 つの列名とマークを持つテーブルがあります。このテーブルに基づいて、700 より大きい場合は「A」、700 未満で 500 より大きい場合は「A」、「B」または「C」のような成績を返すクエリを作成します。主なポイント テーブルには 2 つの列しかありません。

クエリは次のとおりです。

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): サブクエリは複数の行を返します

最後のコマンドについてヘルプが必要です。

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 に答える