有,举例:
SELECT AVG(CASE WHEN e.sal > 2000 THEN e.sal ELSE 2000 END) from emp e;
SELECT AVG(CASE WHEN e.sal > 2000 THEN e.sal ELSE 2000 END) from emp e;
解决方案 »
- ORACEL 语句 消耗资源
- 求助:oracle监听服务启动不了的问题,详情见正文
- 新建Orcal数据表问题
- 用语句查询出除了系统表以外的所有表格
- 如何用dbca建立一个最小最小的数据库?能多小?
- OEM和OMS,在线等答案,次问题我已经是第三次提出,但是没有一个高手... 还请高手们...
- 超級難題200分!!oracle發email,用html報表格式,哪個高手會啊,另UP有3分,不夠再加
- 关于快照的实现
- 哪里有Oracle8.17版的教材可以下载呀?
- 两个结构相同的表的复制?
- oracle是否有系统表和用户表之分?怎么区分?
- 如何得到oracle中属于某个用户的数据表列表(系统表除外)?
eg:DECODE (deptno,10, ’ACCOUNTING’,
20, ’RESEARCH’,
30, ’SALES’,
40, ’OPERATION’,
’NONE’)
有没有象java中的SWITCH CASE ....之类的阿?
不同的是 case 麻烦一点 但功能强大一点。
decode 简单些。
CASE得语句具体怎么写?据个例子可以吗?我指的是在PL/SQL中,不是在VB中;
case
when .... then ...
when ... then ...
...
else ...
end case;
---------------------
case ...
when ... then
...
else ...
end case
CASE grade
WHEN ’A’ THEN dbms_output.put_line(’Excellent’);
WHEN ’B’ THEN dbms_output.put_line(’Very Good’);
WHEN ’C’ THEN dbms_output.put_line(’Good’);
WHEN ’D’ THEN dbms_output.put_line(’Fair’);
WHEN ’F’ THEN dbms_output.put_line(’Poor’);
ELSE dbms_output.put_line(’No such grade’);
END CASE;
---------------
CASE
WHEN search_condition1 THEN sequence_of_statements1;
WHEN search_condition2 THEN sequence_of_statements2;
...
WHEN search_conditionN THEN sequence_of_statementsN;
[ELSE sequence_of_statementsN+1;]
END CASE [label_name];
[<<label_name>>]
CASE
WHEN search_condition1 THEN sequence_of_statements1;
WHEN search_condition2 THEN sequence_of_statements2;
...
WHEN search_conditionN THEN sequence_of_statementsN;
[ELSE sequence_of_statementsN+1;]
END CASE [label_name];
v_Test1 NUMBER := 2;
v_Test2 VARCHAR2(20) := 'Goodbye';
BEGIN
CASE
WHEN v_Test1 = 1 THEN
DBMS_OUTPUT.PUT_LINE('One!');
DBMS_OUTPUT.PUT_LINE('Another one!');
WHEN v_Test1 > 1 THEN
DBMS_OUTPUT.PUT_LINE('> 1!');
DBMS_OUTPUT.PUT_LINE('Still > 1!');
WHEN v_Test2 = 'Goodbye' THEN
DBMS_OUTPUT.PUT_LINE('Goodbye!');
DBMS_OUTPUT.PUT_LINE('Adios!');
ELSE
DBMS_OUTPUT.PUT_LINE('No match');
END CASE;
END;
/