【SQL 分析函数】wm_concat 行列转换

SQL> select deptno,hiredate,ename from emp order by 1,2;

    DEPTNO HIREDATE       ENAME                                                
---------- -------------- ----------                                           
        10 09-6月 -81     CLARK                                                
        10 17-11月-81     KING                                                 
        10 23-1月 -82     MILLER                                               
        20 17-12月-80     SMITH                                                
        20 02-4月 -81     JONES                                                
        20 03-12月-81     FORD                                                 
        20 19-4月 -87     SCOTT                                                
        20 23-5月 -87     ADAMS                                                
        30 20-2月 -81     ALLEN                                                
        30 22-2月 -81     WARD                                                 
        30 01-5月 -81     BLAKE
        30 08-9月 -81     TURNER                                               
        30 28-9月 -81     MARTIN                                               
        30 03-12月-81     JAMES                                                

已选择14行。
SQL> select deptno ,
  2  max (ename) ename
  3  from
  4  ( select deptno,
  5  wm_concat(ename) over (partition by deptno order by hiredate) ename
  6  from emp )
  7  group by deptno;
    DEPTNO ENAME                                                               
---------- --------------------------------------------------                  
        10 CLARK,KING,MILLER                                                   
        20 SMITH,JONES,FORD,SCOTT,ADAMS                                        
        30 ALLEN,WARD,BLAKE,TURNER,MARTIN,JAMES                                
SQL> select wm_concat(ename) as result from (select ename from emp order by ename asc);
RESULT                                                                         
-----------------------------------------------------------------------------------
ADAMS,ALLEN,BLAKE,CLARK,FORD,JAMES,JONES,KING,MARTIN,MILLER,SCOTT,SMITH,TURNER,WARD   

时间: 2024-08-16 22:11:48

【SQL 分析函数】wm_concat 行列转换的相关文章

SQL Server中行列转换 Pivot UnPivot

原文:SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (-) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) )   UNPIVOT用于将列明转为列值(即列转行),在SQL Ser

每日学习心得:SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)

原文 http://www.cnblogs.com/Olive116/p/3271706.html 2013-8-20 1.    SQL查询表的行列转换/小计/统计(with  rollup,with cube,pivot解析) 在实际的项目开发中有很多项目都会有报表模块,今天就通过一个小的SQL查询统计来讲解一下实际开发中比较常用的行列转换/小计/统计等报表统计相关的常用知识点. 题目如下:  查询sales 和stores表,得出1993年每个store每季度销售数量及小计和总计,查询出的

Oracle技术:使用分析函数进行行列转换

经常有朋友问到行列转换的问题,留言板上也有这样的提问. 其实使用分析函数进行处理是很好的方式,翻一下Tom的书,将其中的一个例子收录在这里. 比如查询scott.emp表的用户SAL排序信息,可以使用如下查询: SQL> SELECT deptno, ename, 2         ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY sal DESC) seq 3    FROM emp; DEPTNO ENAME             SEQ

使用分析函数进行行列转换

其实使用分析函数进行处理是很好的方式,翻一下Tom的书,将其中的一个例子收录在这里. 比如查询scott.emp表的用户SAL排序信息,可以使用如下查询: SQL> SELECT deptno, ename, 2 ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY sal DESC) seq 3 FROM emp; DEPTNO ENAME SEQ ---------- ---------- ---------- 10 KING 1 10 CLARK

【SQL 学习】行列转换

SQL> conn system/yang as sysdba 已连接. SQL> conn yang/yang 已连接. SQL> create table change (name varchar(10),subject varchar2(20),grade int); 表已创建. SQL> set timing on SQL> insert into change values ('Jim','语文',100); 已创建 1 行. 已用时间:  00: 00: 00.0

【转】SQL行列转换

原文地址:http://blog.csdn.net/kiki113/article/details/4105929   行列转换等经典SQL语句 1.--行列转换 原表:   姓名     科目   成绩            张三     语文    80            张三     数学    90            张三     物理    85            李四     语文    85            李四     物理    82            李

textbox-sql 行列转换时,空值如何设置成0

问题描述 sql 行列转换时,空值如何设置成0 在用Sql静态方法进行行列转换时,数据库存在的空值如何处理?我想空值变为0. create table tb(姓名 varchar(10) , 学号 varchar(10), 课程 varchar(10) , 分数 int) insert into tb values('张三' ,'123456', '语文' , 74) insert into tb values('张三' ,'123456', '数学' , 83) insert into tb

server-SQL SERVER中行列转换的问题

问题描述 SQL SERVER中行列转换的问题 原数据表id num acount 0 52 1826.52 1 60 2095.11 2 63 2235.61 3 60 2091.12 4 52 1797.13 5 59 2094.63 如何变成目标数据表 id 0 1 2 3 4 5 num 52 60 63 60 52 59 acount 1826.52 2095.11 2235.61 2091.12 1797.13 2094.63 解决方案 类似下面这样,没有调试 select sum(

ORACLE分析函数(6) 使用listagg实现行列转换

listagg函数是在oracle11g中新引入的聚合函数,当然也可以作为分析函数来使用.该函数可以基于分组内特定列的排序,将测量列进行拼接合并. 示例: 在10g中,该函数不被支持 SQL> select prod_id, LISTAGG(cust_first_name||' '||cust_last_name,';') WITHIN GROUP (order by amount_sold) cust_name from sales, customers 2 where sales.cust_