例如,要将下面的数据
以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语句实现出来,不使用函数和存储过程。

