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

क्रॉसस्टैब () क्वेरी से परिणाम पर फ़िल्टरिंग का अप्रत्याशित प्रभाव

extra1, extra2, ... "अतिरिक्त कॉलम" . हैं क्रॉसस्टैब शब्दावली में।
टेबलफंक मॉड्यूल के लिए मैनुअल नियमों की व्याख्या करता है:

और नीचे:

मेरे द्वारा प्रमुख भागों पर बोल्ड जोर।

आप केवल row_name . के अनुसार क्रमित करते हैं :

ORDER  BY row_name ASC

पहले उदाहरण में कोई फर्क नहीं पड़ता कि आप इसके साथ फ़िल्टर करते हैं:

WHERE ... t.extra1 = 'val1'  -- single quotes by me

सभी इनपुट पंक्तियों में extra1 = 'val1' है वैसे भी। लेकिन यह दूसरे उदाहरण में मायने रखता है जहां आप इसके साथ फ़िल्टर करते हैं:

WHERE ... t.extra1 IN('val1', ...) --> More values

अब, अतिरिक्त कॉलम extra1 . के लिए उपरोक्त पहली बोल्ड आवश्यकता का उल्लंघन किया गया है . जबकि पहली इनपुट क्वेरी का सॉर्ट क्रम गैर-नियतात्मक है, "अतिरिक्त" कॉलम के लिए परिणामी मान extra1 मनमाने ढंग से चुने जाते हैं। extra1 . के लिए अधिक संभावित मान , कम पंक्तियों के अंत में 'val1' होगा:यही आपने देखा।

आप इसे अभी भी काम कर सकते हैं:रिपोर्ट करने के लिए extra1 = 'val1' प्रत्येक row_name . के लिए जिसमें उनमें से कम से कम एक है, ORDER BY बदलें करने के लिए:

ORDER  BY row_name, (extra1 <> 'val1')

शीर्ष पर 'val1' क्रमबद्ध करें। उस boolean . के लिए स्पष्टीकरण अभिव्यक्ति (अधिक लिंक के साथ):

अन्य "अतिरिक्त" कॉलम अभी भी मनमाने ढंग से चुने गए हैं, जबकि सॉर्ट ऑर्डर नियतात्मक नहीं है।

क्रॉसटैब मूल बातें:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समूहवार अधिकतम क्वेरी अनुकूलित करें

  2. PostgreSQL विंडो फ़ंक्शन:row_number () ओवर (col2 द्वारा पार्टिशन कॉल ऑर्डर)

  3. PostgreSQL के साथ डेटाबेस टेबल आरेख उत्पन्न करने के लिए उपकरण?

  4. पोस्टग्रेज जोंस कुंजी गणना

  5. मैं उसकेोकू के एमआईएम प्रकार को कैसे निर्दिष्ट कर सकता हूं?