原始sql
SELECT
id = vid
name = vname
class = vclass
FROM
Table
现在有3个班级
如果vclass = 1 则显示 class1 的纪录
如果vclass =2 则显示 class2 的纪录
如果vclass =3 则显示 class3 的纪录问题如果vclass =4 则显示class1和class2 的记录 class3的记录不要
请问有什么简单实用的好方法吗?
希望不要用到if,只用oracle内部函数就能实现的方法

解决方案 »

  1.   

    您这是什么语法阿?
    SELECT 
    id = vid 
    name = vname 
    class = vclass 
    FROM 
    Table 
    根本看不明白.
      

  2.   


    用过了 但是在DECODE CASE里面 class只能等于一个数 不能匹配多个数
      

  3.   

    可以用instr 和decode 一起用就可以了﹐
      

  4.   

    decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)
    我想应该能实现你的要求把?
      

  5.   

    可以如下:
    where (classid = decode(vclass,4,1,vclass)
       or classid = decode(vclass,4,2,null))
    应该就是这样子
      

  6.   

    SELECT 
    id = vid 
    name = vname 
    class = vclass 
    FROM 
    Table 
    这个。。语法看不懂啊,能这么写么
      

  7.   


    select decode("班级",
                  class1,
                  (**),
                  class2,
                  (**),
                  class3,
                  (**),
                  class4,
                  (**))
      from (select class as "班级" from **);
      

  8.   

    您这是什么语法阿? 
    SELECT 
    id = vid 
    name = vname 
    class = vclass 
    FROM 
    Table 
    根本看不明白.