zoukankan      html  css  js  c++  java
  • sql分组合并字段重复项sql for xml path

    -------------------------(情景描述)

    在我们处理数据时,可能会碰到这种情景:

    Id                Name

    1                  a,b

    2                  a

    1                  a,b,c

    对于上面的表数据要求合并同类项Name,得到结果:

    1                  a,b,c

    2                  a

    -------------------------(解决方案)

    我们通过sql for xml path来合并Name,并写一个标量函数来去掉重复项:

    1)  创建标量函数:

    CREATE FUNCTION F_getStr(@oriStr nvarchar(30))

    returns nvarchar(30)

    as

    begin

      declare @str nvarchar(30),@temp nvarchar(30)

      set @str=''

      set @temp=''

      while charindex(',', @oriStr+',')>0

      begin

        set @temp=left(@oriStr, charindex(',', @oriStr+',')-1)

        if charindex(','+@temp+',', ','+@str+',')=0

          set @str=@str+','+@temp

        set @oriStr=stuff(@oriStr, 1, charindex(',', @oriStr+','), '')   

      end

      return stuff(@str, 1, 1, '')

    end

    go

    2)  sql语句:

    select T1.id,

    dbo.F_getStr(

    stuff((select ';'+Name from Test as TT1 where TT1.id=T1.id for xml path('')),1,1,'')

    ) as EndStr from Test as T1

    group by T1.id

  • 相关阅读:
    C# 多线程 异步加载 窗体
    C# 多线程 异步加载 窗体
    C#中的Debug类
    C#中的Debug类
    C# DataGridView:为行头添加行号
    C# DataGridView:为行头添加行号
    向SqlParameter内动态添加参数
    向SqlParameter内动态添加参数
    C# params关键字
    C# params关键字
  • 原文地址:https://www.cnblogs.com/guozefeng/p/3656220.html
Copyright © 2011-2022 走看看