<%@ page contentType="text/html; charset=gb2312"%> oracle里的交叉sql语句写法
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
oracle里的交叉sql语句写法
     发布者: 发布时间:2006-05-07

实例说明

资料表结构(红色为主键)==>
主表:test_part_cost_tab(料号资料表)
part_no  varchar2(20)   
part_name  varchar2(50) 

从表:test_part_cost_dt_tab(料号成本资料表)
part_no varchar2(10) 
cost_id varchar2(5) 
cost number 

数据==>
主表资料:
 part_no  part_name
1 1000            name1000 
2 1001            name1001 
从表资料:
part_no cost_id
  cost
1 1000        100              1.1 
2 1000        200              1.2 
3 1000        300              1.3
4 1000        321              1.321 
5 1001        100              2.1 

交叉资料==>
sql语句产生的结果
part_no  part_name cost_100 cost_200 cost_300 cost_321
1 1000          name1000       1.1                   1.2                 1.3        1.321
2 1001          name1001       2.1                   0                    0                0

具体的交叉sql语句写法:
select a.part_no,a.part_name,
--sum(b.cost)
sum(case when  b.cost_id = ''100'' then b.cost else 0 end) as cost_100,
sum(case when  b.cost_id = ''200'' then b.cost else 0 end) as cost_200,
sum(case when  b.cost_id = ''300'' then b.cost else 0 end) as cost_300,
sum(case when  b.cost_id = ''321'' then b.cost else 0 end) as cost_321

from test_part_cost_tab a,test_part_cost_dt_tab b
where a.part_no = b.part_no
group by a.part_no,a.part_name

ps: 若主表有资料,从表没有资料时,交叉后会没有相应的资料
解决办法是在where条件里用外连接
where a.part_no = b.part_no(+)

参考资料:
http://www.cnblogs.com/iouniuniu/archive/2004/04/05/5238.aspx  ==>此文的语法与本文的语法不同
http://it.icxo.com/htmlnews/2004/11/11/454293.htm  
http://www.itpub.net/176727.html

(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
使用sql*loader向oracle导入数据
oracle数据库开发的一些经验积累(一)
oracle数据库开发的一些经验积累(二)
oracle数据库开发的一些经验积累(三)
oracle数据库开发的一些经验积累(四)
oracle数据库开发的一些经验积累(五)
 
最近评论:
        
冰封的往事!
wow power leveling,wow gold,wow power leveling,wow gold max(1207)
        
冰封的往事!
wow power leveling,wow gold,wow power leveling,wow gold max(4018)
        
冰封的往事!
wow power leveling,wow gold,WoW Gold,wow gold max(5149)
        
飞舞的传奇!
传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(9171)
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号