oracle 行转列 首先看一下源数据:

方法一:WM_CONCAT group by 这个方法没有问题。

SELECT CODE_TS,
            WMSYS.WM_CONCAT(S_NUM +  || ':' || ELEMENT) ELEMENT
        FROM T_MERCH_ELEMENT '  group by CODE_TS;

得到的结果:

上面大家可能会发现序号没有按顺序排列下来。如果没有要求,就这样就可以了。如果要排序看方法二。

方法二:WM_CONCAT OVER  有特殊数据时会报错。报:“操作数值超出系统的限制”。原因我不知道,谁知道麻烦告诉我一下。

select * from (  

SELECT CODE_TS,
            WMSYS.WM_CONCAT(S_NUM +  || ':' || ELEMENT) OVER(ORDER BY S_NUM) ELEMENT,
             TO_NUMBER(DENSE_RANK()
                       OVER(PARTITION BY CODE_TS ORDER BY S_NUM DESC)) ORDERNO
        FROM T_MERCH_ELEMENT ' ORDER BY CODE_TS,S_NUM

        )t ;

WM_CONCAT OVER

如果不报错效果:

方法三:sys_connect_by_path over 这个方法没有问题。但有注意点:sys_connect_by_path  这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下;连接符不可以在你的第一个参数列中存在。你可以用多个组合连接符。

那样就不容易在你的列中存在,我这里用了;加空格。当然你也可以用一个肯定不存在的组合连接符,然后把不需要的部分连接符replace掉

select CODE_TS,ELEMENT from
(
        select CODE_TS,ELEMENT,
  row_number() over(partition by CODE_TS order by CODE_TS,rank desc) ename_path_rank
  from (

     select CODE_TS,rank,
                 ltrim(sys_connect_by_path(rank||':'||ELEMENT,'; '),'; ') ELEMENT  from
                 (
                   select CODE_TS,ELEMENT,row_number() over(partition by CODE_TS order by s_num desc) rank
                   '
                    order by s_num desc
                 ) connect by CODE_TS = prior CODE_TS and rank- = prior rank
       )
       )
;

sys_connect_by_path

效果如下图:

oracle 行转列 分析函数的更多相关文章

  1. Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

    这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...

  2. oracle行转列(连接字符串函数)

    方法一:wmsys.wm_concat(column) 介绍:其函数在Oracle 10g推出,在10g版本中,返回字符串类型,在11g版本中返回clob类型.括号里面的参数是列,而且可以是多个列的集 ...

  3. Oracle行转列、列转行的Sql语句总结

    多行转字符串 这个比较简单,用||或concat函数可以实现  SQL Code  12    select concat(id,username) str from app_userselect i ...

  4. Oracle行转列、列转行的Sql语句总结(转)

    多行转字符串 这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_userselect id||username str f ...

  5. oracle 行转列、列转行

    最近做数据处理,经常遇到需要行转列.列转行的场景,记录个非常简单实用的oracle  列转行.行转的列方法 1.行转列,基础数据如下 做行转列处理 处理SQL select user_name,max ...

  6. Oracle行转列操作

    有时候我们在展示表中数据的时候,需要将行转为列来显示,如以下形式: 原表结构展示如下:---------------------------产品名称    销售额     季度------------ ...

  7. Oracle行转列的函数

    --行转列的函数-- CREATE OR REPLACE FUNCTION Calvin( col IN VARCHAR2,dw IN VARCHAR2) RETURN VARCHAR2 IS ret ...

  8. oracle 行转列 列转行

    行转列 这是一个Oracle的列转行函数:LISTAGG() 先看示例代码: with temp as( select 'China' nation ,'Guangzhou' city from du ...

  9. oracle行转列、列转行、连续日期数字实现方式及mybatis下实现方式

    转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9977591.html 九月份复习,十月份考试,十月底一直没法收心,赶在十一初 由于不可抗拒的原因又不得不重新找 ...

随机推荐

  1. 对于android触摸事件模型的一些理解

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  2. [转]Speeding Up Websites With YSlow

    本文转自:http://net.tutsplus.com/tutorials/other/speeding-up-websites-with-yslow/ We all know there are ...

  3. hdu 3743 树状数组

    思路:我们只需坚守一个原则,本来就在左边的坚决不把它换到右边.也就是相邻的两个数,左边小,右边大,那么就不调换.这样对每个数,只要统计左边比它大的数的个数.可以从后面开始用树状数组统计比它小的数的个数 ...

  4. 203. Segment Tree Modify

    最后更新 二刷 08-Jan-2017 利用线段树来更改,找到更改的NODE,然后更改那个brach上的所有max值. 首先确定recursion的终止条件 然后通过判断大小来找方向 找到NODE之后 ...

  5. jQuery中的经典动画

    show()方法和hide()方法是jQuery中的基本动画方法,hide()方法等于将css()方法设置display属性为none.如何让元素动起来呢,我们可以在show和hide里加入slow, ...

  6. Nginx - Additional Modules, Limits and Restrictions

    The following modules allow you to regulate access to the documents of your websites — require users ...

  7. jquery---helloworld

    style.css

  8. TSQL基础(二)

    over() 开窗函数 排名函数必须和over()一起使用,所以先了解over(). OVER 子句定义查询结果集内的窗口或用户指定的行集. 然后,开窗函数将计算窗口中每一行的值. 您可以将 OVER ...

  9. 一个简单的Redis结合Spring MVC架构以及实现过程

    为了加快开发人员对公司项目的理解.更加容易入手和对公司项目的整体把控. 整体框架 首先介绍公司项目的整体框架,闲话少说,直接上图 整体性能分析 这就是公司的一个整体的架构,为了开发人员对架构的侧重点的 ...

  10. COM 参数有in, out ,retval

    COM 参数有in, out ,retval 来源:http://blog.sina.com.cn/s/blog_472a9f0c01017uer.html In 输入参数,它的值不被返回    Ou ...