zoukankan      html  css  js  c++  java
  • MSSQL 字段分组拼接

    方法1:缺点,不去重,不去空;见表1

    with t  as(
      select 'A' parent, 'A1' child union all
      select 'A', 'A1' union all
      select 'A', '' union all
      select 'A', null union all
      select 'A', 'A2' union all
      select 'B', 'B1' union all
      select 'B', 'B2' union all
      select 'C', 'C1' union all
      select 'C', 'C2' 
    )
    SELECT parent, 
    STUFF(
         ( 
          SELECT ','+ child FROM t a WHERE b.parent = a.parent FOR XML PATH('')
         ),1 ,1, '') children 
    FROM t b 
    GROUP BY parent

    表1:

     方法2:通过游标来处理,去重,去空。见表2

    --定义游标并进行合并处理  
    declare @t table(parent varchar(100),child varchar(100))--定义结果集表变量 
    declare my_cursor cursor local for  
    with t1  as(
      select 'A' parent, 'A1' child union all
      select 'A', 'A1' union all
      select 'A', '' union all
      select 'A', null union all
      select 'A', 'A2' union all
      select 'B', 'B1' union all
      select 'B', 'B2' union all
      select 'C', 'C1' union all
      select 'C', 'C2' 
    ) 
    select parent, child from t1 order by parent, child
    declare @parent_old varchar(100) , @parent varchar(100) , @child varchar(100), @s varchar(100)  
    open my_cursor  
    fetch my_cursor into @parent , @child  
    select @parent_old = @parent , @s=''  
    while @@FETCH_STATUS = 0  
    begin  
        if @parent = @parent_old 
        begin 
          if charindex(@child, @s)=0 and @child<>''
            select @s = @s + ',' + cast(@child as varchar)  
        end else  
          begin  
            insert @t values(@parent_old , stuff(@s,1,1,''))  
            select @s = ',' + cast(@child as varchar) , @parent_old = @parent  
          end  
        fetch my_cursor into @parent , @child  
    END  
    insert @t values(@parent_old , stuff(@s,1,1,''))  
    close my_cursor  
    deallocate my_cursor  
    select * from @t

    表2:

  • 相关阅读:
    NTKO Officecontrol在线Word编辑器的使用
    SQL数据类型解释
    经典SQL语句大全(网络资源共享)
    Ext.grid.GridPanel属性及方法等
    C#简易播放器(基于开源VLC)
    委托,是我委托你处理事件
    .NET面试必备(整理)
    SQL server 数据库连接方式分析
    FTP操作类的使用
    微信企业号平台开发之获取菜单,创建菜单和删除菜单
  • 原文地址:https://www.cnblogs.com/adsoft/p/11474951.html
Copyright © 2011-2022 走看看