Re: Crosstab Problems - Mailing list pgsql-general

From Scott Marlowe
Subject Re: Crosstab Problems
Date
Msg-id dcc563d10710180905n61aa8584jf835cc37bcd61412@mail.gmail.com
Whole thread Raw
In response to Re: Crosstab Problems  (Stefan Schwarzer <stefan.schwarzer@grid.unep.ch>)
List pgsql-general
On 10/18/07, Stefan Schwarzer <stefan.schwarzer@grid.unep.ch> wrote:
> > Could you provide a self-contained test case for this?  There's not
> > really enough information here for someone else to duplicate the
> > problem.  Also, which PG version are you using?
>
> Wasn't sure what you ment with "a self containted test case". Is it
> the raw data?
>
> Here is a SQL dump for the table. One can just neglect the JOIN with
> the countries table (which just replaces the country id with the
> country name):
>
> http://geodata.grid.unep.ch/download/sql_agri_area.sql.zip
>
> But when re-doing the query now without the JOIN, it works (almost):
>
> SELECT
>     *
> FROM
>     crosstab(
>        'SELECT
>             id_country AS id,
>             year_start AS year,
>             value
>         FROM
>             agri_area AS d
>         WHERE
>             year_start = 2003 OR year_start = 2002 OR year_start =
> 2001 ORDER BY year_start ASC, id_country ASC;'
>         , 3)
> AS ct(id int2, y_2003 numeric, y_2002 numeric, y_2001 numeric)
>
> Now, the problem is that it lists three times the IDs, and only the
> first year column is filled with values. The other two year columns
> stay empty.

I use crosstab for a rather large weekly report in our db and it works
fine, however, you can't feel it nulls.  It needs all the holes filled
in, so to speak.

In mine I had to use generate_series to make sure all the rows were
there, then coalesce to make sure there were no nulls.  You might need
to do something like that in yours.  I'm trying it out now.

pgsql-general by date:

Previous
From: Lothar Behrens
Date:
Subject: Re: Am I overseen ?
Next
From: Farhan Mughal
Date:
Subject: Re: Am I overseen ?