例如,要将下面的数据
以GROUP_ID进行分组,一组一行,一组中的多个PRODUCT_ID用逗号分隔,select 出来成如下结果:
在Sql Server中,我目前想到的一种方法是写一个函数,如下:
CREATE FUNCTION [ dbo ] . [ FN_GetProductsByGroup ] ( @GroupId int ) RETURNS [ nvarchar ] ( 4000 ) AS BEGIN DECLARE @ReturnValue [ nvarchar ] (1 000 ) 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语句实现出来,不使用函数和存储过程。