代码之家  ›  专栏  ›  技术社区  ›  Andrey

将字符串值从列连接到单个字符串的最佳方式是什么((T-SQL)

  •  1
  • Andrey  · 技术社区  · 16 年前

    假设我有一张桌子

    MemberMoto公司 ( 成员ID int, 摩托nvarchar(100)

    我需要建立一个进程,将返回每个用户的Moto值的分隔列表。 出于性能原因,我正在寻找一种不使用CURSOR/FETCH来实现这一点的方法

    谢谢您!

    3 回复  |  直到 16 年前
        1
  •  7
  •   Mitchel Sellers    16 年前

    我成功地使用了下面的方法,它可以获取单个用户的信息

    DECLARE @results VARCHAR(MAX)
    SELECT  @Results = COALESCE(@Results+ ', ' + Moto, Moto)
    FROM    MemmberMoto
    WHERE MemberId = 1
    ORDER BY Moto
    

        2
  •  2
  •   Mitchel Sellers    16 年前
    create table MemberMoto (MemberID int, Moto nvarchar(100));
    
    insert into MemberMoto values (1, 'joey');
    insert into MemberMoto values (1, 'sally');
    insert into MemberMoto values (2, 'yaochun');
    insert into MemberMoto values (2, 'willy');
    
    SELECT
       t1.MemberID,
       MotoList = substring((SELECT ( ', ' + Moto )
                               FROM MemberMoto t2
                               WHERE t1.MemberID = t2.MemberID
                               ORDER BY 
                                  MemberID
                               FOR XML PATH( '' )
                              ), 3, 1000 )
    FROM MemberMoto t1
    GROUP BY MemberID
    

    结果:

    MemberID MotoList
    1        joey, sally
    2        yaochun, willy
    
        3
  •  0
  •   Gabe Timothy Khouri    16 年前

    一种方法是创建自己的聚合函数。看到了吗 http://technet.microsoft.com/en-us/library/ms131056.aspx