[英]Concat field value to string in SQL Server
我需要一个与SQL Server中的Oracle WM_CONCAT
类似的函数,它返回一个逗号分隔的列表,其中包含您作为参数传递的任何字段。 例如,在Oracle中,
select WM_CONCAT(first_name) from employee where state='CA'
返回“约翰,吉姆,鲍勃”。
我怎么能在SQL Server中执行此操作?
谢谢
实际答案:
SELECT
SUBSTRING(buzz, 2, 2000000000)
FROM
(
SELECT
firstname
FROM
employee
WHERE
State = 'CA'
FOR XML PATH (',')
) fizz(buzz)
这是一个常见问题。 一些搜索:
尝试这个:
drop table #mike_temp
go
select * into #mike_temp
from (select 'Ken' as firstname, 'CO' as state
union all
select 'Mike' as firstname, 'CO' as state
union all
select 'Tom' as firstname , 'WY' as state
) a
go
SELECT distinct
state
,STUFF((SELECT ', ' + b.firstname FROM #mike_temp b where a.state = b.state FOR XML PATH('')),1, 2, '') AS CSVColumn
from #mike_temp a
在SQL Server 2017中添加了STRING_AGG功能
SELECT t.name as TableName
,STRING_AGG(c.name, ';') AS FieldList
FROM sys.tables t
JOIN sys.columns c
ON t.object_id = c.object_id
GROUP BY t.name;
SELECT Field1, Substring(Field2, 2, LEN(Field2)) AS Field2 FROM
(
SELECT
[InnerData].Field1,
(SELECT ',' + Field2 FROM @Fields WHERE Field1=[InnerData].Field1 FOR XML PATH('')) AS Field2
FROM
(
SELECT DISTINCT Field1 FROM @Fields
) AS [InnerData]
) AS OuterData
我从这个链接得到了这个查询
AFAIK,你需要自己做。
您可以构建一个用户定义的函数,该函数使用游标循环其中状态为CA的Employee的记录,并返回其名称的串联。
尝试这个
select
wm_concat(name)
from
employee
where
state='CA'
group by
state
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.