Si está utilizando el servidor sql 2005+. Entonces puedes hacer esto:
SELECT
JobsTagMap.JobID,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
WHERE
Tags.TagID=JobsTagMap.TagID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM JobsTagMap
EDITAR
Porque no nos mostraste la estructura de la tabla y los datos en las diferentes tablas. Fue un poco difícil de saber. Así que asumo que la estructura de su tabla se parece a esto:
CREATE TABLE JobsTagMap
(
JobID INT,
TagID INT
)
CREATE TABLE Tags
(
TagID INT,
Title VARCHAR(100)
)
Con estos datos:
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')
Si está obteniendo esos datos que está mostrando el JobID
no puede ser único. Es posible que tenga un Job
mesa en algún lugar donde sea único. Si solo desea usar esta tabla que está mostrando, debe hacer algo como esto:
;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
Esto le dará este resultado:
1 1 1 Tag1,Tag2
1 2 2 Tag2,Tag5,Tag9
Entonces, en el futuro, siempre muestre qué estructura de tabla y datos . Eso te dará mejores respuestas