22,210
社区成员
发帖
与我相关
我的任务
分享
这例子太多了
CREATE TABLE tb(col1 varchar(10),col2 int)
INSERT tb SELECT 'a',1
UNION ALL SELECT 'a',2
UNION ALL SELECT 'b',1
UNION ALL SELECT 'b',2
UNION ALL SELECT 'b',3
CREATE FUNCTION dbo.f_str(@col1 varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re=''
SELECT @re=@re+','+CAST(col2 as varchar)
FROM tb
WHERE col1=@col1
RETURN(STUFF(@re,1,1,''))
END
GO
SELECT col1,col2=dbo.f_str(col1) FROM tb GROUP BY col1
/*
col1 col2
---------- -----------
a 1,2
b 1,2,3
*/
-- 以下查询仅知用于 sql 2005 及之后的版本
SELECT
*
FROM(
SELECT DISTINCT
department
FROM 你的表
)A
CROSS APPLY(
SELECT userNames = (
SELECT
- = userName
FROM 你的表
WHERE department = A.department
FOR XML PATH - (''), TYPE
).value('/', 'nvarchar(max)')
)B