दिलचस्प पोस्ट
मैं कैसे NHibernate केवल इसे निष्पादित बिना एसक्यूएल उत्पन्न कर सकते हैं? जावास्क्रिप्ट का उपयोग करके ड्रॉपडाउन सूची छंटनी PHP में die () और exit () में अंतर क्या हैं? .NET रिफ्लेक्टर से बेहतर कुछ? jquery: अपने पाठ के द्वारा एक विकल्प कैसे चुन सकता है? रिकर्सिव लॉक (म्यूटक्स) बनाम गैर रिकर्सिव लॉक (म्यूटक्स) एचटीएमएल 5 प्लेसहोल्डर फोकस पर गायब हो जाता है ब्राउज़र या टैब बंद होने पर सत्र को बंद / मार डालें आईफोन वॉल्यूम बटन पर प्रोग्राम पहुंच जावा का उपयोग करके XML फ़ाइल बनाएं प्रतिक्रिया घटक प्रदान नहीं कर रहा है: जेएस प्रतिक्रिया परीक्षण अगर निष्पादन योग्य पायथन में मौजूद है? HTML5 के साथ आईफ्रेम के लिए वैकल्पिक ड्रॉएबल संसाधन ID # 0x7f020016 से फ़ाइल res / drawable / abc_ic_ab_back_material.xml JSF 2.2 <h: inputFile> का उपयोग कर फ़ाइल कैसे अपलोड करें? सहेजी गई फाइल कहां है?

पीआईवीओटी में एसक्यूएल 2005

मुझे एक कॉलम (नंबर कॉलम) धुएं की जरूरत है उदाहरण के लिए इस डेटा की आवश्यकता है:

a 1 a 2 b 3 b 4 c 5 d 6 d 7 d 8 d 9 e 10 e 11 e 12 e 13 e 14 

ऐसे दिखते हैं

 a 1 2 b 3 4 c 5 d 6 7 8 9 e 10 11 12 13 14 

किसी भी तरह की सहायता का स्वागत किया जाएगा…

वेब के समाधान से एकत्रित समाधान "पीआईवीओटी में एसक्यूएल 2005"

ROW_NUMBER() , PIVOT और कुछ गतिशील SQL का उपयोग करना (लेकिन कोई कर्सर आवश्यक नहीं):

 CREATE TABLE [dbo].[stackoverflow_198716]( [code] [varchar](1) NOT NULL, [number] [int] NOT NULL ) ON [PRIMARY] DECLARE @sql AS varchar(max) DECLARE @pivot_list AS varchar(max) -- Leave NULL for COALESCE technique DECLARE @select_list AS varchar(max) -- Leave NULL for COALESCE technique SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + CONVERT(varchar, PIVOT_CODE) + ']' ,@select_list = COALESCE(@select_list + ', ', '') + '[' + CONVERT(varchar, PIVOT_CODE) + '] AS [col_' + CONVERT(varchar, PIVOT_CODE) + ']' FROM ( SELECT DISTINCT PIVOT_CODE FROM ( SELECT code, number, ROW_NUMBER() OVER (PARTITION BY code ORDER BY number) AS PIVOT_CODE FROM stackoverflow_198716 ) AS rows ) AS PIVOT_CODES SET @sql = ' ;WITH p AS ( SELECT code, number, ROW_NUMBER() OVER (PARTITION BY code ORDER BY number) AS PIVOT_CODE FROM stackoverflow_198716 ) SELECT code, ' + @select_list + ' FROM p PIVOT ( MIN(number) FOR PIVOT_CODE IN ( ' + @pivot_list + ' ) ) AS pvt ' PRINT @sql EXEC (@sql) 

सिर्फ इसलिए कि मैं सीटीई के साथ कुछ और अनुभव करना चाहता था, मैं निम्नलिखित के साथ आया था:

 WITH CTE(CTEstring, CTEids, CTElast_id) AS ( SELECT string, CAST(id AS VARCHAR(1000)), id FROM dbo.Test_Pivot TP1 WHERE NOT EXISTS (SELECT * FROM dbo.Test_Pivot TP2 WHERE TP2.string = TP1.string AND TP2.id < TP1.id) UNION ALL SELECT CTEstring, CAST(CTEids + ' ' + CAST(TP.id AS VARCHAR) AS VARCHAR(1000)), TP.id FROM dbo.Test_Pivot TP INNER JOIN CTE ON CTE.CTEstring = TP.string WHERE TP.id > CTE.CTElast_id AND NOT EXISTS (SELECT * FROM dbo.Test_Pivot WHERE string = CTE.CTEstring AND id > CTE.CTElast_id AND id < TP.id) ) SELECT t1.CTEstring, t1.CTEids FROM CTE t1 INNER JOIN (SELECT CTEstring, MAX(LEN(CTEids)) AS max_len_ids FROM CTE GROUP BY CTEstring) SQ ON SQ.CTEstring = t1.CTEstring AND SQ.max_len_ids = LEN(t1.CTEids) ORDER BY CTEstring GO 

यह कुछ tweaking की आवश्यकता हो सकती है, लेकिन यह आपके उदाहरण के साथ काम किया

सम्मिलित समारोह का इस्तेमाल यहां अन्य सवालों के समान किया जा सकता है, जिन्हें एकत्र डेटा के बारे में पूछा गया है।

किसी एकल सीमांकित फ़ील्ड में एक subquery से एकाधिक पंक्तियों में "शामिल" करने के लिए एक SQL सर्वर फ़ंक्शन कैसे बनाएं?

इस संबंधित प्रश्न का उत्तर आपके पास होना चाहिए: एसक्यूएल सर्वर: स्ट्रिंग डेटा को पीआईवीटींग के उदाहरण

SSRS में एक मैट्रिक्स नियंत्रण गतिशील कॉलम है, अगर यह डेटा किसी रिपोर्ट के लिए बाध्य है, तो आप उस का उपयोग कर सकते हैं अन्यथा आपको एक एसक्यूएल स्प्रोक्स बनाना होगा जो एक्स-एम्प्लेम्स में गतिशील रूप से एसक्यूएल उत्पन्न करता है और फिर इसे निष्पादित करता है।

मुझे यकीन नहीं है कि जो भी आप कर रहे हैं वह वास्तव में संभव है (या कम से कम व्यावहारिक) एसक्यूएल में – मुझे यकीन नहीं है, क्योंकि मुझे अब भी निश्चित नहीं है कि आप क्या करना चाहते हैं

आप अपने क्लाइंट अनुप्रयोग में उस पिवट सारणी को बना सकते हैं, उदाहरण के लिए:

 select distinct Letter from MyTable 

पत्रों की सूची प्राप्त करने के लिए, और फिर एक पाश में पैरामीटर की गई क्वेरी का उपयोग करें:

 select Number from MyTable where Letter=:letter 

प्रत्येक पत्र के लिए संख्याओं की सूची प्राप्त करने के लिए