• 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
  • 相关阅读:
    DataGrid 应用合集
    [转]UBB C#完全版
    IE 7中的快捷键
    DataGrid 单击变色,鼠标经过变色 部分代码
    17种正则表达式
    单无格内强制换行
    图片上传,并自动生成缩略图!
    layout_weight学习心得
    android 手势
    java陷进一
  • 原文地址:https://www.cnblogs.com/rafx/p/PlsqlFh.html
Copyright © 2020-2023  润新知