पोस्टग्रेस 11 . में या बाद में, विंडो का उपयोग करें समारोह एक कस्टम फ्रेम और एक frame_exclusion
. के साथ
:
SELECT *, array_combine(values) OVER (ROWS BETWEEN UNBOUNDED PRECEDING
AND UNBOUNDED FOLLOWING
EXCLUDE CURRENT ROW) AS agg_values
FROM tbl;
अगर name
UNIQUE
नहीं है , और जब से आपने पूछा:
SELECT *, array_combine(values) OVER (ORDER BY name
ROWS BETWEEN UNBOUNDED PRECEDING
AND UNBOUNDED FOLLOWING
EXCLUDE GROUP) AS agg_values
FROM tbl;
db<>fiddle यहां
पहला (भी) पंक्तियों के मनमाने क्रम के साथ काम करता है, केवल वर्तमान को छोड़कर। दूसरे को ORDER BY
की आवश्यकता है यह स्थापित करने के लिए कि कौन सी पंक्तियाँ एक ही समूह में हैं।
बोल्ड जोर मेरा।
यह कस्टम समुच्चय फ़ंक्शन का उपयोग करता है array_combine(anyarray)
a_horse द्वारा उपलब्ध कराया गया
.
या यहां:
- एक Postgres सरणी में डेटा का चयन करना
- क्या PostgreSQL में zip() फ़ंक्शन जैसा कुछ है जो दो सरणियों को जोड़ता है?