遇到一个数据归类的问题,在一个表中 有A,B两列
A
-----
11
12
13
14
15
16
17
18
19
20
21
22
101
201
301
401
501
502
601
701
702
801
802
901
902
-----
B
-----
1
2
3
4
5
6
7
8
9
10
11
12
-----
归类的规则如下
新建一列命名为C
A列含有 11 或者 101 的定义为a;
A列含有 12,或者 A列含有201并且B列含有1至5其中之一的定义为b;
A列含有 13,或者 A列含有301并且B列含有1至5其中之一的定义为c;
A列含有 14 或者 501 的定义为d;
A列含有 15 或者 502 的定义为e;
A列含有 16 或者 401 的定义为f;
A列含有 17,或者 A列含有201并且B列不含1至5其中之一, 或者A列含有301并且B列不含1至5其中之一的定义为g;
A列含有 18 或者 601 的定义为h;
A列含有 19 或者 701 或者 702的定义为i;
A列含有 20 或者 801 的定义为g;
A列含有 21 或者 802 的定义为k;
A列含有 22 或者 901 或者 902的定义为l.
就是这样,太绕了我想不明白,求助查询语句,感激不尽

解决方案 »

  1.   

    你将查询条件写入表中,不行吗?
    比如
    ID  TYPE
    11  A
    101 A
    用INSTR函数,工作表与条件表连接
      

  2.   

    select 
    case 
    when (A like '%11%' or A like '%101%') then 'a'
    when (A like '%12%' or A like '%201%') and B regexp '[1-5]' then 'b'
    when ...
    end as c
    from table1直接按你写出的逻辑用CASE WHEN 处理就行了,体力活。另外注意你中文表达,A列含有 11  与 A列等于11  在中文中是完全不同的含义
      

  3.   

    使用 case~when的方式 可以解决。
      

  4.   

    使用 case~when的方式 可以解决。