Se você estiver usando o sql server 2005+. Então você pode fazer assim:
SELECT
JobsTagMap.JobID,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
WHERE
Tags.TagID=JobsTagMap.TagID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM JobsTagMap
EDITAR
Porque você não nos mostrou a estrutura da tabela e os dados nas diferentes tabelas. Foi um pouco difícil saber. Então, suponho que sua estrutura de tabela seja algo assim:
CREATE TABLE JobsTagMap
(
JobID INT,
TagID INT
)
CREATE TABLE Tags
(
TagID INT,
Title VARCHAR(100)
)
Com esses dados:
INSERT INTO JobsTagMap
VALUES(1,1),(1,2),(2,2),(2,4),(2,5)
INSERT INTO Tags
VALUES(1,'Tag1'),(2,'Tag2'),(3,'Tag2'),(4,'Tag5'),(5,'Tag9')
Se você está obtendo esses dados, está mostrando o
JobID
não pode ser único. Você pode ter um Job
tabela em algum lugar onde seja único. Se você quiser apenas usar essas tabelas que você está mostrando, você precisa fazer algo assim:;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY JobID ORDER BY JobID) AS RowNbr,
JobsTagMap.*
FROM
JobsTagMap
)
SELECT
*,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
JOIN JobsTagMap
ON Tags.TagID=JobsTagMap.TagID
WHERE
JobsTagMap.JobID=CTE.JobID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM
CTE
WHERE
CTE.RowNbr=1
Isso lhe dará este resultado:
1 1 1 Tag1,Tag2
1 2 2 Tag2,Tag5,Tag9
Então, no futuro, sempre mostre qual estrutura de tabela e dados . Isso lhe dará melhores respostas