Search Postgresql Archives

Re: Crosstab Problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

You missed this point in the docs:

Notes

  1. The sql result must be ordered by 1,2.
Change your order by to that and it works fine.

Oh, great. No, haven't seen it. Now it works. Thanks a lot!

Just for the completeness, I attach the SQL.

SELECT
   *
FROM
   crosstab(
      'SELECT
           COALESCE(c.name, ''''),
           year_start AS year,
           value
       FROM
           agri_area AS d
       LEFT JOIN
           countries AS c ON c.id = id_country
       WHERE
           year_start = 2003 OR year_start = 2002 OR year_start = 2001
       GROUP BY
            name, id_country, year_start, value
       ORDER BY 1,2;'
       , 3)
AS ct(name varchar, y_2003 numeric, y_2002 numeric, y_2001 numeric)

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux