日期:2014-05-17  浏览次数:20787 次

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