oracle 保留  case when 上一次的值 在线等。。
本帖最后由 New_sara 于 2012-11-20 14:06:49 编辑
            
问题描述:
JAVA程序版
  大家都知道全局变量把,就类似于下面这种。
 String  code = " "; //一个空格
 while (rs.hasNext() ){
  if(flg == 1){
    code = rs.get("code").value; 
  }
  //获取一个数据连接,将获得的code字段插入到表中
  //在此省略。。
  insert.set("userName" , rs.get("userName").value);
  insert.set("code" , code ); 
   .......
 }
大家看懂上面的意思了吧,就是说,一个list里的数据如下:
变换前:
userName  flg   code      
a               2     0
b               1     c1
c               2     0
d               2     0
e               1     c2
f               2     0
变换后
userName  flg   code      
a               2     " "  -- 一个space 
b               1     c1    
c               2     c1
d               2     c1
e               1     c2
f               2     c2
现在想用ORACLE实现这样的功能,也不知道能不能实现,暂且放在这里大家一起讨论。
ORACLE 版
insert into t1
(
 userName ,
 code ,
 flg 
)
 select 
  userName ,
  case when flg = 1 then code
       else ' '
  end as code ,
  flg 
 from 
  t1
以上SQL代码是有问题的,他得到的结果如下:
变换后
userName  flg   code      
a               2     " "  -- 一个space 
b               1     c1    
c               2     " "
d               2     " "
e