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
  • 相关阅读:
    五子棋
    纯ASP实现的“无刷新”聊天室
    砸砖块
    ASP.NET中批量插入数据
    判断一个dataset的数据是否包含另一个dataset的数据
    使用DB2时的一些问题
    RTOS,什么是硬实时和软实时
    异或运算^的一个作用
    vc 重启和关机
    About DLL
  • 原文地址:https://www.cnblogs.com/rafx/p/PlsqlFh.html
Copyright © 2011-2022 走看看