crosstab()
का इस्तेमाल करें दो पैरामीटर . के साथ विविधता
:
SELECT * FROM crosstab(
'SELECT zone_id, group_id, area
FROM ct
ORDER BY 1,2'
,'SELECT g FROM generate_series(1,8) g' -- ! Provide values explicitly
)
AS ct(
row_name integer
, g_1 float8, g_2 float8
, g_3 float8, g_4 float8
, g_5 float8, g_6 float8
, g_7 float8, g_8 float8);
इस प्रकार स्पष्ट रूप से घोषित करना कि कौन सा मान किस आउटपुट कॉलम में जाता है। तो फ़ंक्शन जानता है कि NULL
को कहां भरना है मूल्य। इस मामले में generate_series()
संख्या 1-8 के साथ 8 पंक्तियाँ प्रदान करने के लिए काम आता है। एक VALUES
अभिव्यक्ति एक विकल्प होगा:
'VALUES (1), (2), (3), (4), (5), (6), (7), (8)'
साथ ही, ORDER BY
को न भूलें पहले पैरामीटर क्वेरी में क्लॉज।
मैंने एक इस संबंधित उत्तर में विस्तृत विवरण दिया है ।