标签:style io color ar os sp for 数据 on
Oracle可以用SYS_CONNECT_BY_PATH字符串聚合函数: SELECT LTRIM(MAX(SYS_CONNECT_BY_PATH(productname, ‘, ‘)), ‘, ‘) AS productname FROM( SELECT ‘1‘ as id, productname, ROW_NUMBER() OVER (PARTITION BY ‘1‘ ORDER BY productname) AS curr, ROW_NUMBER() OVER (PARTITION BY ‘1‘ ORDER BY productname) -1 AS prev FROM products -- where 条件 order by productname ) START WITH curr = 1 CONNECT BY prev = PRIOR curr AND id = PRIOR id GROUP BY id 但MS SQL 2000没有这种函数,但可以通过自定义函数或过程来实现. -- drop function ConnectString Create FUNCTION ConnectString( @name varchar(20) ) RETURNS varchar(1024) AS BEGIN declare @Str varchar(1024) set @Str = ‘‘ select @Str = @Str + (case when @Str = ‘‘ then ‘‘ else ‘,‘ end) + [productname] from products --where [productname] = @name return @Str END GO -- 调用 select DISTINCT dbo.ConnectString(productname) from products SQL Server 2005 可用OUTER APPLY: 以下是从网上摘录的: -- 示例数据 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 /*--结果 id values ----------- ---------------- 1 aa,bb 2 aaa,bbb,ccc (2 行受影响) --*/2 Admin/ adminY/ 刘超楠/ 张伟如/ 单慧慧/
标签:style io color ar os sp for 数据 on
原文地址:http://blog.csdn.net/vipyhd/article/details/40891781