Title: crosstab

Hi I have looked into the tablefunc / crosstab contrib for postgres and it appears like it can't perform what I need.

The crosstab function converts this :

                 row_name    cat    value
            ----------+-------+-------
              row1      cat1    val1
              row1      cat2    val2
              row1      cat3    val3
              row1      cat4    val4
              row2      cat1    val5
              row2      cat2    val6
              row2      cat3    val7
              row2      cat4    val8

To this :

                row_name   category_1   category_2
           ---------+------------+------------
             row1        val1         val2
             row2        val5         val6

Is it possible to do the opposite and go from a column(denormalized) structure to a row(normalized) structure.

I have a table that is similarly stuctured like so:

Melbourne_figures               Sydney_figures  Adelaide_figures   etc...
        10                      20                      22
        10                      22                      29
        ...


However I wish to convert like so :

Melbourne       20
Sydney  42
Adelaide        51

I have tried using unions or subselects however the table is quite large and it takes far too long to run. The most efficient way would be to create a stored proc that uses a cursor to loop through the table transforming the data into the new table structure. However I would appreciate your feeback before writing this procedure?

Theo

______________________________________________________________________
This email, including attachments, is intended only for the addressee
and may be confidential, privileged and subject to copyright. If you
have received this email in error, please advise the sender and delete
it. If you are not the intended recipient of this email, you must not
use, copy or disclose its content to anyone. You must not copy or
communicate to others content that is confidential or subject to
copyright, unless you have the consent of the content owner.

Reply via email to