एक crosstab()
आपके उदाहरण के लिए क्वेरी कुछ इस तरह दिखेगी:
0
भरने के लिए परिणामी NULL
. के लिए मान (टिप्पणी में अनुरोध), उपयोग करें COALESCE()
:
SELECT brand_id
, COALESCE(jan, 0) AS "Jan-2012"
, COALESCE(feb, 0) AS "Feb-2012"
, COALESCE(mar, 0) AS "Mar-2012"
, COALESCE(apr, 0) AS "Apr-2012"
FROM crosstab(
'SELECT brand_id, month, total
FROM brands
ORDER BY 1'
,$$VALUES ('Jan-2012'::text), ('Feb-2012'), ('Mar-2012'), ('Apr-2012')$$
) AS ct (
brand_id int
, jan numeric -- use actual data type!
, feb numeric
, mar numeric
, apr numeric);
इस संबंधित उत्तर में विस्तृत विवरण और लिंक:
PostgreSQL Crosstab प्रश्न
इसके अलावा:आरक्षित शब्द "तारीख" का उपयोग कॉलम नाम के रूप में नहीं करना चाहिए और आपको या तो नहीं करना चाहिए, भले ही पोस्टग्रेस इसे अनुमति देता है।