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

एक कॉलम में एक से अधिक पंक्ति मान के साथ एक से अधिक पंक्तियों को मर्ज करें

अपनी वर्तमान स्थिति से आप बस FILTER . का उपयोग करके पिवट कर सकते हैं खंड:

डेमो:db<>fiddle

SELECT
    response,
    document,
    MAX(bill) FILTER (WHERE label = 'bill') as bill,
    MAX(answer) FILTER (WHERE label = 'amount') as amount,
    MAX(product) FILTER (WHERE label = 'product') as product,
    MAX(answer) FILTER (WHERE label = 'price') as price
FROM t
GROUP BY response, document

मुझे पूरा यकीन नहीं है कि आपकी मूल तालिका कैसी दिखती है। अगर यह इस तरह अधिक है:

response | document | label   | value
-------: | -------: | :------ | :----
71788176 | 79907201 | bill    | 26899
71788176 | 79907201 | amount  | 1    
71788176 | 79907201 | product | shoes
71788176 | 79907201 | price   | 25.99

फिर आप क्वेरी को इस तरह संशोधित कर सकते हैं:

डेमो:db<>fiddle

SELECT
    response,
    document,
    MAX(value) FILTER (WHERE label = 'bill') as bill,
    MAX(value) FILTER (WHERE label = 'amount') as amount,
    MAX(value) FILTER (WHERE label = 'product') as product,
    MAX(value) FILTER (WHERE label = 'price') as price
FROM t
GROUP BY response, document

संपादित करें :उत्पाद कॉलम में JSON मान जोड़ने के लिए:

डेमो:db<>fiddle

वेरिएंट 1:आप बस टाइप कर सकते हैं json टाइप में text :

MAX(product::text) FILTER (WHERE label = 'product') as product,

वेरिएंट 2:आप "name" . से मान पढ़ते हैं विशेषता:

MAX(product ->> 'name') FILTER (WHERE label = 'product') as product,



  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. प्रमाणीकरण त्रुटि के साथ pgAgent कार्य विफल हो जाता है

  3. SQL में एक स्ट्रिंग से फ़ज़ी मिलान

  4. java.sql.SQLException:कनेक्शन पहले ही बंद कर दिया गया है

  5. पोस्टग्रेएसक्यूएल न्यूलाइन कैरेक्टर