可以
insert T_2
select nvl(to_char(A,'yyyymm'),'200'||substr(B,1,1)||'0'||substr(B,2,1)) from T_1

解决方案 »

  1.   

    select decode(a,null,to_char(substr(to_char(b),1,1)+2000)||to_char(substr(to_char(b),2,1)),to_char(a,'yyyymm') from t_1
      

  2.   

    insert into t_2
    ( select decode(A, null, to_char(to_date('0'||substr(to_char(B),1,1)||substr(to_char(B),2,1),'YYMM'),'YYYYMM'),to_char(A,'YYYYMM')) from t_1 )
      

  3.   

    select to_char(a,'yyyymm') a from t_1 where a is not null
    union
    select '200'||substr(to_char(b))||substr(to_char(b),2,1) from t_1 where a is null;
      

  4.   

    忘记说明B列的组成了,前两位有可能为0D,代表200012,字符D为december的缩写.
    如果为9D则为199912.并不全是2000以后,1996-2005;最后问题演变为SQL语句里可以有表达式(IF(>,<)的判断)吗?
    怪我没说清
      

  5.   

    我同意phenix的写法!
    insert T_2
    select nvl(to_char(A,'yyyymm'),'200'||substr(B,1,1)||'0'||substr(B,2,1)) from T_1