2009-10-25 15 views
7

में स्ट्रिंग के लिए Concat फ़ील्ड मान SQL सर्वर में ओरेकल WM_CONCAT पर एक समान फ़ंक्शन की आवश्यकता है, जो तर्क के रूप में आप जो भी फ़ील्ड पास करते हैं, उसकी कॉमा से अलग सूची लौटाती है। उदाहरण के लिए, ओरेकल में,SQL सर्वर

select WM_CONCAT(first_name) from employee where state='CA' 

"जॉन, जिम, बॉब" लौटाता है।

मैं SQL सर्वर में यह कैसे कर सकता हूं?

धन्यवाद

उत्तर

0

AFAIK, आपको इसे स्वयं करने की आवश्यकता है।

आप उपयोगकर्ता परिभाषित फ़ंक्शन का निर्माण कर सकते हैं जो एक कर्सर के साथ लूप को कर्मचारी के रिकॉर्ड जहां राज्य सीए है और उनके नामों का समापन देता है।

+0

नहीं है, कोई जरूरत नहीं सब पर एक कर्सर का प्रयोग करने के लिए। – gbn

3

वास्तविक जवाब:

SELECT 
    SUBSTRING(buzz, 2, 2000000000) 
FROM 
    (
    SELECT 
     firstname 
    FROM 
     employee 
    WHERE 
     State = 'CA' 
    FOR XML PATH (',') 
    ) fizz(buzz) 

एक सामान्य प्रश्न यहाँ। कुछ खोज:

+3

यह ध्यान देने योग्य मूल्य केवल SQL Server 2005 और बाद में मान्य है। ओपी ने यह नहीं बताया है कि वे किस SQL ​​सर्वर का उपयोग कर रहे हैं। –

+1

आप STUFF कमांड के साथ SUBSTRING को प्रतिस्थापित कर सकते हैं जो स्ट्रिंग लम्बाई को जानने के बिना ठीक से काम करेगा। – WesleyJohnson

+1

@ क्रिसिस जे: मैं कहूंगा कि एसक्यूएल 2 के 5 एक उचित धारणा है कि एसक्यूएल 2000 आरटीएम और 2.5 संस्करण बाद में – gbn

2

इस प्रयास करें:


    drop table #mike_temp 
go 

select * into #mike_temp 
    from (select 'Ken' as firstname, 'CO' as state 
     union all 
     select 'Mike' as firstname, 'CO' as state 
     union all 
     select 'Tom' as firstname , 'WY' as state 
     ) a 
go 

SELECT distinct 
     state 
     ,STUFF((SELECT ', ' + b.firstname FROM #mike_temp b where a.state = b.state FOR XML PATH('')),1, 2, '') AS CSVColumn 
    from #mike_temp a 
-3

इस

select  
    wm_concat(name) 
from 
    employee 
where 
    state='CA' 
group by 
    state 
कोशिश
+0

यह सही नहीं है। ओपी ने बताया कि यह एसक्यूएल सर्वर में काम नहीं करता है। यदि आप कुछ अलग करना चाहते हैं तो आप इसे हटाना चाहते हैं, या इसे संपादित करना चाहते हैं? – criticalfix

0
SELECT Field1, Substring(Field2, 2, LEN(Field2)) AS Field2 FROM 
(
    SELECT 
     [InnerData].Field1, 
     (SELECT ',' + Field2 FROM @Fields WHERE Field1=[InnerData].Field1 FOR XML PATH('')) AS Field2 
     FROM 
     (
      SELECT DISTINCT Field1 FROM @Fields 
     ) AS [InnerData] 
) AS OuterData 

मैं इस लिंक

Refer this Link for more Clarification

0

एसक्यूएल सर्वर 2017 STRING_AGG समारोह में से इस क्वेरी मिल गया जोड़ दिया गया है

SELECT t.name as TableName 
     ,STRING_AGG(c.name, ';') AS FieldList 
    FROM sys.tables t 
    JOIN sys.columns c 
    ON t.object_id = c.object_id 
    GROUP BY t.name;