यदि आप एसक्यूएल सर्वर 2005+ का उपयोग कर रहे हैं। तब आप ऐसा कर सकते हैं:
SELECT
JobsTagMap.JobID,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
WHERE
Tags.TagID=JobsTagMap.TagID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM JobsTagMap
संपादित करें
क्योंकि आपने हमें अलग-अलग टेबल में टेबल स्ट्रक्चर और डेटा नहीं दिखाया। यह जानना थोड़ा कठिन था। तो मुझे लगता है कि आपकी टेबल संरचना कुछ इस तरह दिखती है:
CREATE TABLE JobsTagMap
(
JobID INT,
TagID INT
)
CREATE TABLE Tags
(
TagID INT,
Title VARCHAR(100)
)
इस डेटा के साथ:
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')
अगर आपको वह डेटा मिल रहा है जो आप दिखा रहे हैं JobID
अद्वितीय नहीं हो सकता। आपके पास Job
हो सकता है तालिका कहीं न कहीं यह अद्वितीय है। यदि आप केवल इन तालिका का उपयोग करना चाहते हैं जो आप दिखा रहे हैं तो आपको कुछ ऐसा करने की आवश्यकता है:
;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
इससे आपको यह परिणाम मिलेगा:
1 1 1 Tag1,Tag2
1 2 2 Tag2,Tag5,Tag9
इसलिए भविष्य में हमेशा दिखाएं कि टेबल संरचना और यह डेटा . इससे आपको बेहतर उत्तर मिलेंगे