SQL> create table grade(language number,math number,english number);Table created.SQL> insert into grade values(70,80,58);1 row created.SQL> commit;Commit complete.SQL> select * from grade; LANGUAGE MATH ENGLISH ---------- ---------- ---------- 70 80 58 SQL> select 2 decode(sign(language-80+1),1,'优秀',decode(sign(language-60+1),1,'及格','不 及格')) "语言", 3 decode(sign(math-80+1),1,'优秀',decode(sign(math-60+1),1,'及格','不及格')) "数学", 4 decode(sign(english-80+1),1,'优秀',decode(sign(english-60+1),1,'及格','不及 格')) "英语" 5 from grade;语言 数学 英语 ------ ------ ------ 及格 优秀 不及格SQL>
decode 好像只有Oracle可以用。 能不能只用标准SQL语句写。 谢谢!
select case when language > 80 then '优秀' when language <= 80 and language > 60 then '及格' else '不及格' end "语文" from t;#1的思路很有意思.
呵呵 还是你这样用CASE简洁明了一些 我以前只知道CASE的一种语法格式 CASE search_expression WHEN expression1 THEN result1 WHEN expression2 THEN result2 ... WHEN expressionN THEN resultN ELSE default_result END刚才看了你的回帖去查了一下 才知道了另外一种 CASEWHEN condition1 THEN result1 WHEN condistion2 THEN result2 ... WHEN condistionN THEN resultN ELSE default_result END
---------- ---------- ----------
70 80 58
SQL> select
2 decode(sign(language-80+1),1,'优秀',decode(sign(language-60+1),1,'及格','不
及格')) "语言",
3 decode(sign(math-80+1),1,'优秀',decode(sign(math-60+1),1,'及格','不及格'))
"数学",
4 decode(sign(english-80+1),1,'优秀',decode(sign(english-60+1),1,'及格','不及
格')) "英语"
5 from grade;语言 数学 英语
------ ------ ------
及格 优秀 不及格SQL>
else '不及格' end "语文"
from t;#1的思路很有意思.
我以前只知道CASE的一种语法格式
CASE search_expression
WHEN expression1 THEN result1
WHEN expression2 THEN result2
...
WHEN expressionN THEN resultN
ELSE default_result
END刚才看了你的回帖去查了一下 才知道了另外一种
CASEWHEN condition1 THEN result1
WHEN condistion2 THEN result2
...
WHEN condistionN THEN resultN
ELSE default_result
END
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html