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

बहु-तालिका खंडों के साथ एकल पंक्ति में एकाधिक पंक्ति मानों का चयन करें

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

SELECT user_id
      ,CASE WHEN attrib_id = 1 THEN value ELSE NULL END AS attrib_1_val
      ,CASE WHEN attrib_id = 2 THEN value ELSE NULL END AS attrib_2_val
  FROM UserAttribute;

फिर समग्र फ़ंक्शन का उपयोग करके मैट्रिक्स को संपीड़ित करें:

SELECT user_id
      ,MAX(CASE WHEN attrib_id = 1 THEN value ELSE NULL END) AS attrib_1_val
      ,MAX(CASE WHEN attrib_id = 2 THEN value ELSE NULL END) AS attrib_2_val
  FROM UserAttribute
  GROUP BY user_id;

टिप्पणी के जवाब में, आईडी के बजाय विशेषता नाम से खोजना:

SELECT ua.user_id
      ,MAX(CASE WHEN a.attrib_name = 'attrib1' THEN ua.value ELSE NULL END) AS attrib_1_val
      ,MAX(CASE WHEN a.attrib_name = 'attrib2' THEN ua.value ELSE NULL END) AS attrib_2_val
  FROM UserAttribute ua
  JOIN Attribute a ON (a.attrib_id = ua.attrib_id)
  WHERE a.attrib_name IN ('attrib1', 'attrib2')
  GROUP BY ua.user_id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में एक स्ट्रिंग को एक तिथि में कैसे बदलें

  2. थ्रेड पथ और कुल वोटों की संख्या के आधार पर टिप्पणियों का आदेश दें

  3. क्या PostgreSQL में SSIS जैसी सुविधा है?

  4. होस्ट नाम पोस्टग्रेज़ को पते में अनुवाद नहीं कर सका:नाम या सेवा ज्ञात नहीं है

  5. PostgreSQL में HTML टैग्स को अलग करना