Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर Concatenate GROUP BY

यदि आप एसक्यूएल सर्वर 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

इसलिए भविष्य में हमेशा दिखाएं कि टेबल संरचना और यह डेटा . इससे आपको बेहतर उत्तर मिलेंगे



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी # में एक SQL सर्वर संग्रहीत प्रक्रिया की एसिंक्रोनस कॉल

  2. SQL सर्वर में अस्थायी तालिकाओं का परिचय

  3. व्युत्पन्न कॉलम में स्ट्रिंग दिनांक आयात करें

  4. संग्रहीत प्रक्रिया में गतिशील WHERE क्लॉज का निर्माण

  5. SQL सर्वर (T-SQL) में किसी प्रोफ़ाइल के भीतर डेटाबेस मेल खाते की अनुक्रम संख्या कैसे बदलें