ठीक है दोस्तों इसने मुझे कुछ दिनों के लिए अपनी आँखें घुमा ली हैं। मान लें कि मेरे पास नीचे की तरह दो टेबल (या अधिक) हैं।

TABLE1

ID  | NAME      | DATE          | MORE COLS....
1   | MARK      | 2018-31-10    | ....
2   | JOHN      | 2018-29-10    | ....
...

TABLE2

FK_TBL1_ID | Data1     | Data2     | 
1          | 11111     | 33333     | 
1          | 22222     | 44444     | 
2          | 12345     | 67899     | 
...

और मैं नीचे की तरह एक सिंगल रो और एक सिंगल कॉलम में इन टेबलों की एक ही आईडी के साथ प्रत्येक पंक्ति के कई कॉलम जोड़ना चाहूंगा। प्रत्येक नई "पंक्ति" को पिछले से ';' से विभाजित किया जाएगा।

क्वेरी परिणाम

ID  | NAME      | DATE          |       Data1Data2        | 
1   | MARK      | 2018-31-10    |  1111 3333; 2222 4444;  | 
2   | JOHN      | 2018-29-10    |  12345 67899            | 

आप ऐसा करने के बारे में कैसे जाएंगे? मुझे एक्सएमएल पाथ के लिए उदाहरण मिले लेकिन केवल तभी जब दो कॉलम वाली कई पंक्तियां हों और विभिन्न पंक्तियों पर संयुक्त हों।

1
Alex 25 जून 2018, 13:56

1 उत्तर

सबसे बढ़िया उत्तर

यहां आपके डेटा के साथ एक उदाहरण दिया गया है:

select t1.*,
       stuff( (select '; ' + coalesce(data1, '') + ' ' + coalesce(data2, '')
               from table2 t2
               where t2.FK_TBL1_ID = t1.id
               for xml path ('')
              ), 1, 2, ''
            ) as Data1Data2
from table1 t1;
3
Gordon Linoff 25 जून 2018, 15:05