Sql Server实现多行数据按分组用逗号分隔成一行数据
例如,要将下面的数据
以GROUP_ID进行分组,一组一行,一组中的多个PRODUCT_ID用逗号分隔,select 出来成如下结果:
在Sql Server中,我目前想到的一种方法是写一个函数,如下:
CREATE FUNCTION [dbo].[FN_GetProductsByGroup] ( @GroupId int ) RETURNS [nvarchar](4000) AS BEGIN DECLARE @ReturnValue [nvarchar](1000) SET @ReturnValue = '' SELECT @ReturnValue=@ReturnValue + RTRIM(LTRIM(PRODUCT_ID)) + ',' FROM T_DEMO WHERE GROUP_ID = @GroupId SET @ReturnValue = substring(@ReturnValue,1,len(@ReturnValue)-1) RETURN @ReturnValue END
然后查询语句这样写:
SELECT GROUP_ID, [dbo].[FN_GetProductsByGroup](GROUP_ID) As PRODUCTS FROM T_DEMO GROUP BY GROUP_ID
查询结果如下图所示:
在Sql Server中,不知道有没有哪位大侠能否只用纯SELECT语句实现出来,不使用函数和存储过程。
作者:精致码农-王亮
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。