`

Oralce透视行列转换pivot/unpivot

 
阅读更多

试验一、行转列。查询各个部门每个工资段的人数。

with emp_dept as
 (select dname, empno,sal from emp a join dept b using (deptno))
select *
  from emp_dept
pivot (count(empno) as quantity for sal in (2450 as p2450,1300 as p1300,3000 as p3000,2975 as p2975,800 as p800))
 order by dname;

 得到结果:

   	DNAME	P2450_QUANTITY	P1300_QUANTITY	P3000_QUANTITY	P2975_QUANTITY	P800_QUANTITY
1	ACCOUNTING	1	1	0	0	0
2	RESEARCH	0	0	2	1	1
3	SALES	0	0	0	0	0

 比较

通过分组来查询

select dname, sal, count(empno)
  from emp a
  join dept b
 using (deptno)
 where sal in (2450, 1300, 300, 2975, 800)
 group by dname, sal

 得到结果

   	DNAME	SAL	COUNT(EMPNO)
1	ACCOUNTING	1300	1
2	RESEARCH	800	1
3	ACCOUNTING	2450	1
4	RESEARCH	2975	1

 

二、

多列透视

增加一个聚合,派生列数会增加一倍。

with dept_salary as
 (select dname, empno, sal from emp a, dept b where a.deptno = b.deptno)
select *
  from dept_salary
pivot (count(empno) as sal, sum(nvl(sal, 0)) as sum_prc for sal in(800 as p800,
                                                              2975 as p2975,
                                                              1250 as p1250))
order by dname;

 结果:略。

 

分享到:
评论

相关推荐

    Oracle行转列之pivot

    总的来说,Oracle中的PIVOT和UNPIVOT关键字为数据透视和逆透视提供了强大的语法支持,使得数据转换查询更加直接和高效。这些技术的掌握对于数据库开发人员来说是不可或缺的,特别是在处理复杂报表和数据分析任务时。...

    SQL行列转换

    部分SQL版本,如Oracle和SQL Server,提供了内置的PIVOT和UNPIVOT关键字,使得行列转换更为直接。例如,你可以直接在查询中使用PIVOT关键字指定要转换的列和生成的新列,而UNPIVOT关键字则会将多列数据转换为行。 ...

    我的新菜单

    1. "SQL行列转换大全":这是一个关于SQL中行列转换的综合教程,可能涵盖了Pivot和Unpivot操作,以及如何在没有内置Pivot支持的数据库系统中实现类似功能的方法。行列转换在数据分析和报告中极为重要,因为它允许用户...

    SQL Server与Oracle常用函数对比

    - SQL Server的`PIVOT`和`UNPIVOT`操作用于数据透视,Oracle也有相应的`PIVOT`和`UNPIVOT`语法。 - Oracle的PL/SQL是一种强大的过程式语言,与SQL Server的T-SQL相似,但语法和特性有所不同。 通过对比这些函数,...

    oracle内部SQL学习资料

    PIVOT和UNPIVOT操作,用于数据透视和展开。 这些只是Oracle SQL学习的一部分,深入掌握这些知识点将极大地提升你在Oracle数据库环境中的操作能力。"chinese"这个文件名可能指的是文档是中文版的,因此对于中文使用...

    SQL袖珍参考手册(第3版)

    - **数据透视和反向透视**: 使用PIVOT和UNPIVOT操作符对数据进行转换。 - **谓词**: 用于WHERE子句中的条件表达式。 - **递归查询**: 使用WITH RECURSIVE子句进行递归查询。 - **正则表达式**: 用于模式匹配的函数。...

    SQL最佳实践

    Pivot和Unpivot操作允许将行转换为列或将列转换为行,这对于数据透视和报表非常有用。 - **Pivot**:将一列或多列的行数据转换为列数据。 - **Unpivot**:将列数据转换为行数据。 ##### CONNECT_BY CONNECT_BY是...

    SQL语法大全中文版

    透视表(PIVOT)和解透视表(UNPIVOT)操作可实现数据的旋转,便于分析。 通过深入理解和熟练掌握这些SQL知识点,无论是数据分析师、数据库管理员还是开发人员,都能有效地管理数据库并从中提取有价值的信息。学习...

    sql学习的 学习心得

    - **PIVOT 和 UNPIVOT 函数**:这两个函数提供了更灵活的数据透视功能,简化了数据转换的过程,尤其适用于数据分析场景。 #### 六、管理工具和技巧 - **Profiler**:Profiler 是一个非常强大的监控工具,用于捕获 ...

    sql-challenge:SQL挑战

    - **透视表和CUBE/ROLLUP**:理解如何使用`PIVOT`或`UNPIVOT`操作将列转换为行,或者使用`CUBE`和`ROLLUP`进行多维数据分析。 此外,你还需要熟悉特定数据库系统的特性,如MySQL、Oracle、SQL Server或PostgreSQL的...

Global site tag (gtag.js) - Google Analytics