pivot - SQL - How to place sequence of order of events for one person in one row? -


मेरे पास निम्न तालियां हैं:

ग्राहक तालिका

  ग्राहक_आईडी 1 2 3   

आदेश तालिका

  Customer_ID Order_ID ब्रांड Order_Date 1 101 A 01/02 / 2010 1 102 बी 05/02/2010 1 103 ए 06/01/2014 2 104 बी 02/01/2013 2 105 डी 02/02/2013 3 106 ए 07/03/2013 3 107 बी 07/04/2013 3 108 सी 07/05/2013 3 109 डी 07/07/2013 3 110 ई 07/11/2013   

मैं यह कैसे प्राप्त करने के लिए दो अलग तालिकाओं से इस डेटा को स्थानांतरित कर सकता हूँ एक परिणाम विंडो:

  ग्राहक आदेश 1 क्रम 2 क्रम 3 आदेश 4 आदेश 5 1 101 102 103 2 104 105 3 106 107 108 109 110 ग्राहक आदेश 1 क्रम 2 क्रम 3 आदेश 4 आदेश 1 1 102 102 103 2 104 105 3 106 107 108 109 110 ग्राहक ऑर्डर 1 ऑर्डर 2 ऑर्डर 3 ऑर्डर 4 ऑर्डर 5 1 एबीए 2 बीडी 3 एबीसीडीई   

ऑर्डर 1-एन कॉलम केवल एक ही ग्राहक के आदेशों की अधिकतम संख्या के रूप में ही बढ़ेगा यदि ग्राहक 4 10 ऑर्डर हैं, कॉलम ऑर्डर 1 ऑर्डर 2 ऑर्डर 3 होगा ... ऑर्डर 10

धन्यवाद,

आपने यह नहीं बताया कि किस तरह का डाटाबेस आप उपयोग कर रहे हैं सामान्य तौर पर आपको पिवट (जैसे mysql) या crosstab (PostgreSQL के लिए) का उपयोग करने की आवश्यकता है। आप निश्चित रूप से SO पर संबंधित प्रश्न पा सकते हैं। माईक ने MySQL के धुरी के बारे में विषय का उल्लेख किया है, जबकि यह एक PostgreSQL के क्रोसटैब को बताता है:

तो PostgreSQL में यह होगा: "चयन" ग्राहक_आईडी से "चयन करें" , रिक्त / * वास्तव में कोई फर्क नहीं पड़ता * /, "ऑर्डर 'आईडी' से ऑर्ड ') एएस (ग्राहक_आईडी इंट, ऑर्डर 1 इंट, ऑर्डर 2 इंट, ऑर्डर 3 इंट, ऑर्डर 4 इंट, ऑर्डर 5 इंट, ऑर्डर 6 इंट); ग्राहक_आईडी | Order1 | क्रम 2 | ऑर्डर 3 | ऑर्डर 4 | ऑर्डर 5 | क्रम 6 ------------- + -------- + -------- + -------- + -------- + -------- + -------- 1 | 101 | 102 | 103 | | | 2 | 104 | 105 | | | | 3 | 106 | 107 | 108 | 109 | 110 | (3 wiersze) का चयन करें * crosstab से ('चयन करें' ग्राहक_आईडी ', शून्य / * वास्तव में कोई फर्क नहीं पड़ता * /,' ब्रांड 'से ऑर्ड' ') एएस (ग्राहक_आईडी ईटी, "ब्रांड" VARCHAR, "ब्रांड_2" VARCHAR, "Brand_3" VARCHAR , "ब्रांड" VARCHAR, "Brand_5" VARCHAR, "Brand_6" VARCHAR); ग्राहक_आईडी | ब्रांड_1 | ब्रांड_2 | Brand_3 | Brand_4 | Brand_5 | ब्रांड_6 ------------- + --------- + --------- + --------- + ----- ---- + --------- + --------- 1 | ए | बी | ए | | | 2 | बी | डी | | | | 3 | ए | बी | सी | डी | ई | यदि यह आपका डीबीएमएस है - तो कृपया डॉक्टर को देखें: क्रॉसस्टैब एक अतिरिक्त मॉड्यूल (टेबलफंक) का हिस्सा है - आपको इसे "चालू" करने की आवश्यकता है, क्योंकि यह डिफ़ॉल्ट रूप से सक्षम नहीं है (संभवत: यह कारण है, यह एसक्यूएलफ़िल्ड पर क्यों काम नहीं करता है)

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

logging - How can I log both the Request.InputStream and Response.OutputStream traffic in my ASP.NET MVC3 Application for specific Actions? -

java - Why my included JSP file won't get processed correctly? -