本人刚刚接触oracle,有个sql语句总是报错,请各位前辈指教
例如:
select deptname as dt,decode(deptname,deptname in( '1','2','3'),'7',' ') as realdept from tab
我的需求是判断一个字段的值是否在某一范围内,如果是就给他们一个统一的值,如果不在,则是空字符,请各位高手指点下啊,急!!~~

解决方案 »

  1.   

    像你这样情况要用case when来做
    decode里面是不能加判断条件的
      

  2.   

    decode没有IN的判断
    可以这样select deptname dt,
    case when deptname in ('1','2','3') then
              '7'
         else ''
    end realdept
    from tab;
      

  3.   

    select deptname as dt,case deptname 
                               when '1' then '7' 
                               when '2' then '7'
                               when '3' then '7'
                               else ' ' 
                               end realdept from tab
      

  4.   

    这是个例子,实际上可能有多条数据需要这么操作,zhangchu的挺好用的,谢谢啦,分就给个大头了
      

  5.   

    学习中,自己尝试了一下:
    select  * from dept;
    DEPTNO DNAME          LOC
    ------ -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTONselect deptno,
    case when deptno in(10,20) then '10|20'
      else '30|40'
    end deptarea
    from dept;DEPTNO DEPTAREA
    ------ --------
        10 10|20
        20 10|20
        30 30|40
        40 30|40