A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

问题描述
[AppleScript] 纯文本查看 复制代码
无论是在sql 2000, 还是在 sql 2005 中,都没有提供字符串的聚合函数, 所以, 当我们在处理下列要求时,会比较麻烦:
有表tb, 如下:
    id    value
    ----- ------
    1     aa
    1     bb
    2     aaa
    2     bbb
    2     ccc
需要得到结果:
    id     values
    ------ -----------
    1      aa,bb
    2      aaa,bbb,ccc
即, group by id, 求 value 的和(字符串相加)

解决方法
  • [AppleScript] 纯文本查看 复制代码
    -- 示例数据  
        DECLARE @t TABLE(id int, value varchar(10))  
        INSERT @t SELECT 1, 'aa'  
        UNION ALL SELECT 1, 'bb'  
        UNION ALL SELECT 2, 'aaa'  
        UNION ALL SELECT 2, 'bbb'  
        UNION ALL SELECT 2, 'ccc'  
     -- 查询处理  
        SELECT * FROM( SELECT DISTINCT id FROM @t)A
        OUTER APPLY
        (SELECT [values]=
            STUFF(REPLACE(REPLACE(  
            (  
            SELECT value FROM @t N  
            WHERE id = A.id  
            FOR XML AUTO  
            ), '<N value="', ','), '"/>', ''), 1, 1, '')  
        )N

结果
  • [AppleScript] 纯文本查看 复制代码
    /*--结果
        id     values
        ----------- ----------------
        1      aa,bb
        2      aaa,bbb,ccc
    (2 行受影响)
    --*/


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马