`

oracle动态交叉表

阅读更多
有一张表
ID NAME QUARTER QUANTITY
1 开发部 春天 10000
2 开发部 夏天 50000
3 开发部 秋天 30000
4 开发部 冬天 20000
5 销售部 春天 10000
6 销售部 夏天 4000
7 销售部 秋天 30000
8 销售部 冬天 20000

想要转换为

QUARTER 开发部 销售部
夏天 50000 4000
春天 10000 10000
秋天 30000 30000
冬天 20000 20000

如果已知部门可以写静态sql:
select quarter ,sum(decode(name,'开发部',quantity,0)) 开发部,
sum(decode(name,'销售部',quantity,0)) 销售部 
from department group by quarter


如果部门未知的话,可以写动态sql,因为oracle中返回结果集过于麻烦,所以可以通过建立临时表,或者是视图的方式,间接再查询结果集,所以我拼装执行的sql有一个建立视图的动作:
declare
cv_sql varchar2(5000):=' ';
cn_number number;
cn_i number :=0;
sql_query varchar2(5000);
begin 
for v_cur in (select distinct name into cn_number from department)
loop
cv_sql:= cv_sql||',sum(decode(name,'''|| v_cur.name ||''',quantity,0)) '|| v_cur.name;
end loop;
sql_query:='create or replace view query_zjx_v as select quarter'||cv_sql||' from department group by quarter';
dbms_output.put_line(sql_query);
execute immediate sql_query;
end;


分享到:
评论

相关推荐

    Oracle动态交叉表生成

    正在看的ORACLE教程是:Oracle动态交叉表生成。Oracle是应用最广的大型数据库,而在范式下进行Oracle数据库设计则可以大大减少数据冗余,使数据库维护更方便,可惜范式下的数据表一般不能直接输出。今天我们就来探讨...

    oracle交叉表sql

    ### Oracle交叉表SQL知识点解析 #### 一、交叉表(Pivot Table)概念与应用场景 在数据分析领域,交叉表(Pivot Table)是一种常见的数据整理技术,它将原始数据按照特定维度进行重组,使得数据从行式存储变为列式...

    SQL动态交叉表,希望对SQL程序员有帮助

    在SQL编程中,动态交叉表查询是一种非常实用的技术,它能够帮助我们以表格形式展示多维度数据,使得数据更易理解和分析。交叉表,又称作透视表或转置表,通常用于将行与列的数据位置互换,或者将某一列的数据作为新...

    基于动态交叉表的Web多维分析系统设计与实现.pdf

    该方法利用多维分析建立交叉表视图,并通过Oracle数据库的PL/SQL实现视图的动态刷新。此外,还采用了Struts框架和JFreeChart等开源工具来实现多维分析数据在Web上的动态更新。 1. **建立交叉表视图**:使用多维分析...

    范式下的Oracle数据库设计及其动态交叉表的生成.pdf

    在Oracle环境下,可以利用SQL查询语句,通过JOIN操作来动态生成交叉表。这种方法结合多个表的数据,形成新的视图或报表,满足用户按特定方式查看数据的需求。例如,将学生表、科目表、成绩表等通过JOIN操作连接,...

    范式下的Oracle数据库设计及其动态交叉表的生成 (1).pdf

    《范式下的Oracle数据库设计及其动态交叉表的生成》这篇文献主要探讨了在数据库设计中遵循范式的重要性,以及如何在Oracle数据库中实现动态交叉表的生成。文章以提高数据库性能和数据完整性为目标,深入剖析了数据库...

    Jfreechart动态交叉表的生成与应用.pdf

    本文主要探讨了如何在Java与Oracle环境下生成动态交叉表(Crosstab),并分析了其在实际应用中的重要性和具体实施方法。数据库设计时需遵循数据范式的要求以确保数据的一致性和完整性,但在实际使用过程中,为了满足...

    sql交叉表中是使用

    ### SQL Server 中交叉表的使用及遇到的小问题 在 SQL Server 中,交叉表(Pivot Table)是一种将一列中的数据转换为多列的方式,从而实现数据的汇总、分析等功能。这种方式非常适合处理需要进行维度变换的数据场景...

    Oracle中对两个数据表交集查询简介

    本文主要探讨如何在Oracle中找到两个数据表的交集,即找出存在于两个表中的共同数据。交集查询对于数据分析和数据比对至关重要,尤其在合并或清理重复数据时。 首先,我们来看使用`INTERSECT`操作符的方法。`...

    数据库的交叉表、左链接

    在SQL中,可以使用SQL的CASE语句或PIVOT操作(某些数据库系统如Oracle支持)来实现交叉表查询。例如,如果我们有一个销售数据表,包含产品、地区和销售额信息,我们可能想要按地区展示每个产品的销售额。通过交叉表...

    C#动态交叉表查询

    本主题聚焦于"C#动态交叉表查询",这是一个关键的数据库操作技术,用于处理和展示数据的多维度分析。交叉表查询,也称为透视表或转置查询,允许用户将数据按照不同的列和行进行汇总,以揭示更深层次的模式和趋势。 ...

    oracle 多表联接查询

    通过本文的介绍,我们了解到Oracle中的多表联接查询包括等值联接、非等值联接、外联接、自联接、交叉联接和自然联接等多种形式。每种联接方式都有其适用场景,掌握这些技巧对于进行复杂的数据分析和处理非常有用。在...

    oracle多表连接技巧

    ### Oracle多表连接技巧详解 #### 一、引言 在Oracle数据库中,多表连接是一种非常实用且常用的技术,它允许用户从多个表中获取数据,并基于特定条件进行匹配和整合。本文将详细介绍Oracle中多表连接的各种类型及其...

    Oracle行转列之pivot

    从Oracle 11g版本开始,引入了PIVOT和UNPIVOT关键字,以支持显式的查询转换,即从行数据转换为列数据,或从列数据转换为行数据,进而生成交叉表格式的结果。这一技术尤其适用于报表生成,使得能够使用SQL语句针对...

    交叉查询经典

    在 Oracle 数据库中,我们可以使用行列转换和交叉查询来生成交叉表。例如,我们可以使用以下 SQL 语句来生成交叉表: select name,sum(case when a.subject='语文' then result else null end) as "语文", sum...

    oracle多表查询PPT课件.pptx

    Oracle数据库的多表查询是数据库操作中的核心技能之一,它涉及到如何从两个或更多个相关表中检索数据。本章的PPT课件主要讲解了如何进行多表查询,包括等值连接、非等值连接、外连接以及自连接等多种连接类型。 1. ...

    Oracle BI Publisher

    Template Builder 允许用户插入数据字段、数据驱动的表格和交叉表、数据驱动的图表等_into_ RTF 模板中。用户可以预览和验证 RTF 模板,以确保模板的正确性。 数据字段 在 Template Builder 中,用户可以插入数据...

    oracle 多表查询

    在 Oracle 中,多表查询可以使用不同的连接类型,包括内连接(inner join)、左连接(left join)、右连接(right join)、全连接(full join)和交叉连接(cross join)。 1. 内连接(inner join) 内连接是指...

    Oracle discover基本操作手册

    页明细交叉表结合了交叉表和页明细表的特点,提供多层次的数据分析,支持行维、列维、页维的综合运用,适用于复杂的数据挖掘和高级分析场景。 ### 四、总结 Oracle Discoverer以其直观的界面和强大的数据处理能力...

Global site tag (gtag.js) - Google Analytics