अपनी वर्तमान स्थिति से आप बस FILTER
. का उपयोग करके पिवट कर सकते हैं खंड:
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
फिर आप क्वेरी को इस तरह संशोधित कर सकते हैं:
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 मान जोड़ने के लिए:
वेरिएंट 1:आप बस टाइप कर सकते हैं json
टाइप में text
:
MAX(product::text) FILTER (WHERE label = 'product') as product,
वेरिएंट 2:आप "name"
. से मान पढ़ते हैं विशेषता:
MAX(product ->> 'name') FILTER (WHERE label = 'product') as product,