`
leon1509
  • 浏览: 538169 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ORACLE实现表的反转

阅读更多
这是目标数据:



这是想得到的结果:




下面开始语句部分:
1. 建表:
create table test(name varchar2(20),dept varchar2(20),km varchar2(100),sal number(20,2));


2.插入数据:
insert into test values('贵州','软件实施部','差旅费',154);
insert into test values('贵州','软件实施部','差旅费',180);
insert into test values('贵州','软件实施部','市内交通费',5);
insert into test values('贵州','软件实施部','市内交通费',5);
insert into test values('贵州','软件实施部','差旅费',82);
insert into test values('贵州','软件实施部','差旅费',85);
insert into test values('贵州','人力资源中心','员工借款',-500);
insert into test values('贵州','财务中心','押金',1000);
insert into test values('贵州','财务中心','资金调拨款',100000);
insert into test values('贵州','财务中心','财务费用',25);
insert into test values('贵州','财务中心','资金调拨款',50000);
insert into test values('贵州','财务中心','财务费用',25);
insert into test values('贵州','财务中心','融资借款',-50000);
insert into test values('贵州','营销中心','员工借款',10000);
insert into test values('贵州','营销中心','员工借款',35000);
insert into test values('贵州','售后服务部','员工借款',1500);
insert into test values('贵州','财务中心','财务费用',50);
insert into test values('贵州','财务中心','财务费用',100000);
insert into test values('贵州','财务中心','财务费用',149000);
insert into test values('贵州','财务中心','财务费用',25);
insert into test values('贵州','系统部','员工借款',1500);
insert into test values('贵州','营销中心','员工借款',2000);
insert into test values('贵州','人力资源中心','员工借款',-3596);
insert into test values('北京','人力资源中心','房租物业水电',800);
insert into test values('北京','人力资源中心','固定资产及软件添置',190);
insert into test values('北京','人力资源中心','固定资产及软件添置',25);
insert into test values('贵州','售后服务部','零星采购',20);
insert into test values('北京','测试部','差旅费',100);


3.实现反转:
select
  distinct
	a.name,a.dept,
  nvl(sum(b.sal),0) "财务费用",
  nvl(sum(c.sal),0) "差旅费",
   nvl(sum(d.sal),0) "房租物业水电",
  nvl(sum(e.sal),0) "固定资产及软件添置",
   nvl(sum(f.sal),0) "零星采购",
  nvl(sum(g.sal),0) "融资借款",
   nvl(sum(h.sal),0) "市内交通费",
  nvl(sum(i.sal),0) "押金",
  nvl(sum(j.sal),0) "员工借款",
  nvl(sum(k.sal),0) "资金调拨款"
from test a
left outer join test b on b.name=a.name and b.dept=a.dept and b.km='财务费用'
left outer join test c on c.name=a.name and c.dept=a.dept and c.km='差旅费'
left outer join test d on d.name=a.name and d.dept=a.dept and d.km='房租物业水电'
left outer join test e on e.name=a.name and e.dept=a.dept and e.km='固定资产及软件添置'
left outer join test f on f.name=a.name and f.dept=a.dept and f.km='零星采购'
left outer join test g on g.name=a.name and g.dept=a.dept and g.km='融资借款'
left outer join test h on h.name=a.name and h.dept=a.dept and h.km='市内交通费'
left outer join test i on i.name=a.name and i.dept=a.dept and h.km='押金'
left outer join test j on j.name=a.name and j.dept=a.dept and h.km='员工借款'
left outer join test k on k.name=a.name and k.dept=a.dept and k.km='资金调拨款'
group by a.name,a.dept
order by a.name,a.dept
  • 大小: 93.1 KB
  • 大小: 7.6 KB
分享到:
评论

相关推荐

    PowerDesigner优化Oracle库表设计的若干方法

    3. **索引策略**:索引是提高查询性能的有效手段,Oracle提供了多种索引类型,如B树索引、位图索引、反转索引等,正确选择和应用索引对于优化查询至关重要。 #### 优化实例分析 以一个简单的订单系统为例,包含...

    完美整合(通用分页)SSH+Oracle (需要自己加入jar包,只是源码)

    分页实现**:在SSH+Oracle的环境下,实现通用分页通常有以下几种方法: - 使用Hibernate的Criteria API配合 ScrollableResults 实现分页。 - 利用HQL(Hibernate Query Language)进行分页查询。 - 自定义SQL...

    ssh+oracle整合

    开发者通常会在Spring的配置文件中定义数据源和事务管理器,以实现与Oracle数据库的连接和事务控制。 Ecside是一款基于Web的数据库管理和报表生成工具,它通常用于快速生成表格展示和报表。在描述中提到的"table...

    oracle_spring

    文档可能会详细解释如何配置和使用Spring的IoC(控制反转)容器,以及如何利用Spring的AOP机制来实现事务管理和日志记录等功能。此外,它可能还会涵盖Spring的声明式数据验证、MVC框架、以及如何与各种数据源(包括...

    mybatis+spring+springmvc+oracle

    这个项目“mybatis+spring+springmvc+oracle”就是一个典型的例子,它利用这些技术实现了对Oracle数据库的简单查询功能。下面将详细阐述其中涉及的主要知识点。 1. **MyBatis**: MyBatis 是一款优秀的持久层框架...

    银行项目金典SSH+oracle

    4. **Oracle数据库设计**:熟悉ER模型,学习创建表、索引、视图,以及触发器和存储过程的编写,理解数据库性能优化技巧。 5. **项目架构**:分析项目的整体架构,包括模块划分、接口设计和通信机制,了解如何通过SSH...

    Oracle全文检索及自动更新索引的实现.pdf

    实现Oracle全文检索通常包括以下步骤: 1. **创建表**:首先需要创建一个包含长文本字段的表,例如`CREATE TABLE TextTable(id NUMBER, author VARCHAR2(20), text CLOB);` 2. **创建首选项**:定义文本处理的规则...

    s2si struts2+spring+ibats框架的留言本,oracle数据库

    2. **Spring框架**:Spring是企业级Java应用的核心框架,提供了完整的IOC(Inversion of Control,控制反转)和AOP支持。在本项目中,Spring通过DI管理各个组件,如Service、DAO等,确保它们之间的松耦合。同时,...

    oracle-pagehelper-通用mapper-easyui-SSM框架示例

    综上所述,"oracle-pagehelper-通用mapper-easyui-SSM框架示例"是一个完整的Java Web项目,利用SSM框架连接Oracle数据库,通过PageHelper实现分页查询,通用Mapper简化数据库操作,EasyUI构建用户友好的前端界面。...

    ssm整合oracle

    在SSM整合中,Spring主要负责控制反转和事务管理。 **Spring MVC**是Spring框架的一部分,专为Web开发设计,它处理HTTP请求,将请求分发到相应的控制器,然后通过模型和视图来展示结果。Spring MVC的组件包括...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习...

    Oracle

    7. **数字反转**:"数字反转.txt"可能是一个实际编程问题,讲述如何在PL/SQL中将一个整数或浮点数的数字顺序反转,这可能是为了实现某些特定的计算或格式化需求。 8. **自定义数据类型**:Oracle支持用户定义数据...

    08.Oracle的where子句1

    WHERE子句的运用非常广泛,可以通过组合不同的字段、比较运算符和逻辑运算符,实现对复杂查询需求的支持。在实际的数据库管理工作中,WHERE子句是进行数据分析、数据筛选的关键工具,对于理解并优化数据库查询性能至...

    Oracle索引分析与比较

    反向索引通过反转索引码的字节来分散数据,避免了序列号递增导致的索引块集中问题。这有助于提高并发性,减少锁冲突。 3. **降序索引**: - 降序索引在Oracle 8i中引入,专门用于逆向排序的查询。当查询需要按照...

    Oracle Summary Index

    - **字节反转:**在创建反向索引时,Oracle会自动将索引键中的每个字节进行反转操作。 - **减少竞争:**通过反转索引键,原本连续的键值被分散到不同的索引块中,从而降低了索引更新时的锁竞争。 **适用场景:** - ...

    基于Oracle的文献资料库全文检索技术.pdf

    全文检索的基本原理是通过构建反转索引来实现。反转索引将文档拆分为一系列关键字,每个关键字都会链接到包含该关键字的文档列表。这样,当执行查询时,系统会直接搜索索引而不是原始文档,极大地提高了查询速度。...

Global site tag (gtag.js) - Google Analytics