zoukankan      html  css  js  c++  java
  • SQL分割(合并)保存 Mr

    假如一个User表 字段

    ID    name      description       part
    1     张三          描述(部分1)       1
    1     张三          描述(部分2)       2
    2     李四          描述              1
    3     王五          描述              1

    ID和part作为联合主键,由于description 字段可能很长,超过了varchar(4000)的范围,所以这种情况会分成多个part存储,如张三,分成了两个部分。
    现在需要一条select语句,需要取出后,如果字段是多个part,那么就合并,得到如下结果:

    ID    name      description                      
    1     张三         描述(part1和2合并的完整描述)         
    2     李四         描述                               
    3     王五         描述                              

    实现SQL

    select id, name, ltrim(sys_connect_by_path(description, ','), ',')
      from (select id,
                   name,
                   description,
                   row_number() over(partition by id order by part) rn,
                   count(*) over(partition by id) cnt
              from AAA -- 换成你的表名
            ) a
     where level = cnt
     start with rn = 1
    connect by prior id = id
           and prior rn = rn - 1
    
    
    select id,name,wm_syswm_concat(description) from table group by id,name 
    select id,name,WMSYS.WM_CONCAT(description) from table group by id,name 
    Mr-sniper
    北京市海淀区
    邮箱:rafx_z@hotmail.com
  • 相关阅读:
    自定义异常
    finally关键字
    捕捉异常try-catch
    throws抛出异常
    exception概述和分类
    jvm前奏篇
    Java并发编程学习随笔 (一) 使用run() 和 start()的差别
    MyCat学习 ------分库分表 随笔
    java最常用的内置工具类
    Mybatis框架常见面试题
  • 原文地址:https://www.cnblogs.com/rafx/p/PlsqlFh.html
Copyright © 2011-2022 走看看