I have a table deflator
that is defined as:
Table "deflator"
Column | Type | Modifiers
-------------+-------------------+-----------
country_code | smallint | not null
country_name | character varying | not null
year | smallint | not null
deflator | numeric |
source | character varying |
Sample output from this table looks like:
country_code | country_name | year | deflator | source
-------------+---------------+------+----------+----------
1 | country_1 | 2016 | 12 | source_1
1 | country_1 | 2015 | 11 | source_2
1 | country_1 | 2014 | 10 | source_2
2 | country_2 | 2016 | 15 | source_1
2 | country_2 | 2015 | 14 | source_1
2 | country_2 | 2014 | 13 | source_2
3 | country_3 | 2016 | 18 | source_1
3 | country_3 | 2015 | 17 | source_2
3 | country_3 | 2014 | 16 | source_3
(9 rows)
I use the following query to pivot the table if I exclude the column source
:
SELECT
*
FROM CROSSTAB (
'SELECT
country_code
, country_name
, year
, deflator
FROM dimension.master_oecd_deflator
ORDER BY 1;'
, $$ VALUES ('2014'::TEXT), ('2015'::TEXT), ('2016'::TEXT) $$
) AS "ct" (
"country_code" SMALLINT
, "country_name" TEXT
, "2014" NUMERIC
, "2015" NUMERIC
, "2016" NUMERIC
);
The above query gives me:
country_code | country_name | 2016 | 2015 | 2014 |
-------------+-------------------+------+--- --+------+
1 | country_1 | 12 | 11 | 10 |
2 | country_2 | 15 | 14 | 13 |
3 | country_3 | 18 | 17 | 16 |
But because the source of the deflator varies from year to year for each country I want to include the source
column in the pivot for my desired output to look like:
country_code | country_name | 2016 | 2016_source | 2015 | 2015_source | 2014 | 2014_source
-------------+-------------------+------+-------------+------+-------------+------+------------
1 | country_1 | 12 | source_1 | 11 | source_2 | 10 | source_2
2 | country_2 | 15 | source_1 | 14 | source_1 | 13 | source_2
3 | country_3 | 18 | source_1 | 17 | source_2 | 16 | source_3
How do I modify this query to give me the desired output? (With the source for each year listed next to the year). Is this even possible?