[英]Group one Column CSV
我想獲取資源和相關技能,我想問一問是否可以將技能分組在一個列中,就像CSV這樣
ID技能
1,閱讀,寫作2,編程,閱讀
SELECT Resources.Id, Skills.Description
FROM Resources INNER JOIN
Skills_Resources ON Resources.Id = Skills_Resources.ResourceID INNER JOIN
Skills ON Skills_Resources.skillID = Skills.Id
為了將多個行連接在一起,您將需要使用FOR XML PATH
:
SELECT distinct r.Id,
STUFF(
(SELECT ', ' + cast(s.description as varchar(50))
FROM Skills s
INNER JOIN Skills_Resources sr
ON sr.skillID = s.Id
where r.Id = sr.ResourceID
FOR XML PATH (''))
, 1, 1, '') AS skills
FROM Resources r;
請參閱帶有演示的SQL Fiddle 。
您還可以將CROSS APPLY
與FOR XML PATH
:
select distinct r.Id,
left(s.skill, len(s.skill)-1) skills
from Resources r
cross apply
(
select s.description + ', '
FROM Skills s
INNER JOIN Skills_Resources sr
ON sr.skillID = s.Id
where r.Id = sr.ResourceID
FOR XML PATH('')
) s (skill);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.