有,举例:
SELECT AVG(CASE WHEN e.sal > 2000 THEN e.sal ELSE 2000 END) from emp e;

解决方案 »

  1.   

    也可以用decode来完成
    eg:DECODE (deptno,10, ’ACCOUNTING’,
    20, ’RESEARCH’,
    30, ’SALES’,
    40, ’OPERATION’,
    ’NONE’)
      

  2.   

    or use decode to do this.
      

  3.   

    SELECT CASE VARITER when 1 then 'ok' when 2 then 'no' ELSE 'nothing' END from yourtable
      

  4.   

    楼上的大哥:
    有没有象java中的SWITCH CASE ....之类的阿?
      

  5.   

    楼上的大哥:我在存储过程里用这些语句,我觉得用IF...THEN 判断太麻烦了,想找个简单的方法
      

  6.   

    case 和Decode 都可以呀。
    不同的是 case 麻烦一点 但功能强大一点。 
    decode 简单些。
      

  7.   

    to pumawang(还是叫小林吧..) :
       CASE得语句具体怎么写?据个例子可以吗?我指的是在PL/SQL中,不是在VB中;
      

  8.   

    in oracle pl/sql:
    case 
      when .... then ...
      when ... then ...
      ...
      else ...
    end case;
    ---------------------
    case ...
      when ... then
      ...
      else ...
    end case
      

  9.   

    example:
    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];
      

  10.   

    第二个例子该成:
    [<<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];
      

  11.   

    DECLARE
      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;
    /
      

  12.   

    对,用CASE和DECODE来进行分类的条件判断!