Re: Substitute column in SELECT with static value? (Crosstab problem?) - Mailing list pgsql-general

From Stefan Schwarzer
Subject Re: Substitute column in SELECT with static value? (Crosstab problem?)
Date
Msg-id 8D9521AF-B513-4059-8DAB-374D31A38E24@grid.unep.ch
Whole thread Raw
In response to Re: Substitute column in SELECT with static value?  ("Scott Marlowe" <scott.marlowe@gmail.com>)
Responses Re: Substitute column in SELECT with static value? (Crosstab problem?)  ("Scott Marlowe" <scott.marlowe@gmail.com>)
List pgsql-general
>>
>> Hi there,
>>
>> I run an aggregation on national statistics to retrieve regional
>> values (for
>> Africa, Europe, ...). Now, I want to have a global aggregation as
>> well. The
>> easiest thing for my PHP/HTML procedure would be to have the
>> global row make
>> appear within the regional result. So it would be something like
>>
>>    name     |     y_2001      |    y_2002 .....
>> --------------------------------------------------------
>>   Africa      |      2323         |     342323
>>   Europe    |     ....
>>   .....
>>   Global     |    849309       |    .....
>
>> Is there a way to substitute this with a "static" value, such as
>> "Global"?
>> So, that the query still results in three columns?
>
> Sure, just include it as 'Global'
>
> Note the single, not double, quotes.
>

That's what I thought at the beginning too. But it didn't work.

Both queries are being executed separately correctly.


SELECT * FROM crosstab( '
    SELECT
        COALESCE(r.name, '''') AS name,
        year_start AS year,
        SUM(value) AS value
    FROM
        co2_total_cdiac AS d
    RIGHT JOIN
        countries_view AS c ON c.id = id_country
    RIGHT JOIN
        regions AS r ON r.id = c.reg_id
    WHERE
        year_start = 2002
    GROUP BY
        r.name,
        year_start

    UNION ALL

    SELECT
        'Global' AS name,
        year_start AS year,
        SUM(value) AS value
    FROM
        co2_total_cdiac AS d
    RIGHT JOIN
        countries_view AS c ON c.id = id_country
    RIGHT JOIN
        regions AS r ON r.id = c.reg_id
    WHERE
        year_start = 2002
    GROUP BY
        year_start

    ORDER BY
        1,2;
', 3) AS ct(name varchar, y_2001 numeric, y_2002 numeric, y_2003
numeric)
ORDER BY
    name ASC



pgsql-general by date:

Previous
From: Mayuresh Nirhali
Date:
Subject: Re: unable to createuser in postgres 8.2.5 opensolaris
Next
From: Ow Mun Heng
Date:
Subject: Re: Calculation for Max_FSM_pages : Any rules of thumb?