Als u sql server 2005+ gebruikt. Dan kun je dit als volgt doen:
SELECT
JobsTagMap.JobID,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
WHERE
Tags.TagID=JobsTagMap.TagID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM JobsTagMap
BEWERKEN
Omdat je ons de tabelstructuur en de gegevens in de verschillende tabellen niet hebt laten zien. Het was een beetje moeilijk om te weten. Dus ik neem aan dat je tabelstructuur er ongeveer zo uitziet:
CREATE TABLE JobsTagMap
(
JobID INT,
TagID INT
)
CREATE TABLE Tags
(
TagID INT,
Title VARCHAR(100)
)
Met deze gegevens:
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')
Als u die gegevens krijgt, toont u de JobID
kan niet uniek zijn. Misschien heb je een Job
tafel ergens waar het uniek is. Als je alleen deze tabel wilt gebruiken die je laat zien, dan moet je zoiets als dit doen:
;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
Dit geeft je dit resultaat:
1 1 1 Tag1,Tag2
1 2 2 Tag2,Tag5,Tag9
Dus in de toekomst altijd laten zien welke tabelstructuur en het gegevens . Dat geeft je betere antwoorden