热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle中decode的使用和oracle中的行转列

decode其实就是if-else,如:decode(ybc,null,0,ybc),,这个意味着如果ybc列null,则函数返回0,否则返回ybc的值。再如,decode(变量,条件

decode其实就是if-else,如:decode(ybc,null,0,ybc),,这个意味着如果ybc列==null,则函数返回0,否则返回ybc的值。

再如,decode(变量,条件1,值1,条件2,值2),这个就意味着是:if-elsif,如果是decode(变量,条件1,值1,条件2,值2,值3),这个则是if-elsif-else。

oracle的行转列的具体参考网址:http://www.2cto.com/database/201108/100792.html


下面是的代码:

insert into tj_kszgjf(id,bjdm,xxdm,xqdm,dsdm,ybc,xxtj,xqtj,dstj,tj_kszgjf.zstg,tj_kszgjf.sum, shijian,flag)
select seq_kszgjftj.nextval,bj.bjdm,bj.xx_xxdm as xxdm,xx.xq_xqdm as xqdm,xq.ss as dqdm,
  decode(ybc,null,0,ybc),
  decode(xxtj,null,0,xxtj),
  decode(xqtj,null,0,xqtj),
  decode(dstj,null,0,dstj),
  decode(zstg,null,0,zstg),
  decode("sum",null,0,"sum"),
  sysdate,flag
from
  (select zgjf.bjdm, 
    sum(decode(zgjf.zt, 1,1,0)) ybc,
    sum(decode(zgjf.zt, 2, 1,0)) xxtj,
    sum(decode(zgjf.zt, 3, 1,0)) xqtj,
    sum(decode(zgjf.zt, 4, 1,0)) dstj,
    sum(decode(zgjf.zt, 5, 1,0)) zstg,
    count(bmxh)as "sum",
    flag
    from zgjf
    group by flag,bjdm
   )zgjftemp
right join bj on zgjftemp.bjdm=bj.bjdm
inner join xx on bj.xx_xxdm=xx.zxdm
inner join xq on xx.xq_xqdm=xq.xqdm;
commit;



推荐阅读
author-avatar
伴生约定_879
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有