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语句实现出来,不使用函数和存储过程。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM