json_build_object()
पोस्टग्रेज 9.4 या नए में
या jsonb_build_object()
jsonb
लौटाने के लिए ।
SELECT value_two, json_agg(json_build_object('value_three', value_three
, 'value_four' , value_four)) AS value_four
FROM mytable
GROUP BY value_two;
मैनुअल:
<ब्लॉकक्वॉट>एक विविध तर्क सूची से एक JSON ऑब्जेक्ट बनाता है। परंपरा के अनुसार, तर्क सूची में वैकल्पिक कुंजियाँ और मान होते हैं।
किसी भी संस्करण के लिए (9.3 पोस्ट सहित)
row_to_json()
ROW
. के साथ अभिव्यक्ति चाल चलेगी:
SELECT value_two
, json_agg(row_to_json((value_three, value_four))) AS value_four
FROM mytable
GROUP BY value_two;
लेकिन आप मूल कॉलम नाम खो देते हैं। एक पंजीकृत पंक्ति प्रकार के लिए एक कलाकार इससे बचता है। (अस्थायी तालिका का पंक्ति प्रकार तदर्थ प्रश्नों के लिए भी कार्य करता है।)
CREATE TYPE foo AS (value_three text, value_four text); -- once in the same session
SELECT value_two
, json_agg(row_to_json((value_three, value_four)::foo)) AS value_four
FROM mytable
GROUP BY value_two;
या उप-चयन . का उपयोग करें ROW
. के बजाय अभिव्यक्ति। अधिक वर्बोज़, लेकिन बिना टाइप कास्ट:
SELECT value_two
, json_agg(row_to_json((SELECT t FROM (SELECT value_three, value_four) t))) AS value_four
FROM mytable
GROUP BY value_two;
क्रेग के संबंधित उत्तर में अधिक स्पष्टीकरण:
- नेस्टेड जॉइन के साथ PostgreSQL 9.2 row_to_json ()
db<>फिडल यहाँ
पुराना sqlfiddle