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:

  • 相关阅读:
    「开始,DP专题」
    ZOJ3612 Median treap
    [HNOI2004]宠物收养所 treap
    SIRO Challenge 状态压缩 + DP 未解
    SPOJ3273 Order statistic set treap模板
    HNU2[I题]Omar Loves Candies 贪心
    HNU1[B题] DP,数位DP
    HNU1[F题] 栈模拟计算
    Node.js权威指南 (6)
    瘦下来之后你会遇见不一样的自己
  • 原文地址:https://www.cnblogs.com/adsoft/p/11474951.html
Copyright © 2011-2022 走看看