crosstab - Mailing list pgsql-sql

From Theo Galanakis
Subject crosstab
Date
Msg-id D1444817B78AB546BF2896C2B70E7F04371F22@ganesh.au.lpint.net
Whole thread Raw
Responses Re: crosstab  (Josh Berkus <josh@agliodbs.com>)
List pgsql-sql
<p><font size="2">Hi I have looked into the tablefunc / crosstab contrib for postgres and it appears like it can't
performwhat I need.</font><p><font size="2">The crosstab function converts this : </font><p>                <font
size="2">row_name    cat    value</font><br /><font size="2">            ----------+-------+-------</font><br /><font
size="2">             row1      cat1    val1</font><br /><font size="2">              row1      cat2    val2</font><br
/><fontsize="2">              row1      cat3    val3</font><br /><font size="2">              row1      cat4   
val4</font><br/><font size="2">              row2      cat1    val5</font><br /><font size="2">              row2     
cat2   val6</font><br /><font size="2">              row2      cat3    val7</font><br /><font size="2">             
row2     cat4    val8</font><p><font size="2">To this : </font><p>                <font size="2">row_name  
category_1  category_2</font><br /><font size="2">           ---------+------------+------------</font><br /><font
size="2">            row1        val1         val2</font><br /><font size="2">             row2        val5        
val6</font><p><fontsize="2">Is it possible to do the opposite and go from a column(denormalized) structure to a
row(normalized)structure.</font><p><font size="2">I have a table that is similarly stuctured like so:</font><p><font
size="2">Melbourne_figures              Sydney_figures  Adelaide_figures   etc...</font><br />        <font
size="2">10                     20                      22</font><br />        <font size="2">10                     
22                     29</font><br />        <font size="2">...</font><br /><p><font size="2">However I wish to
convertlike so :</font><p><font size="2">Melbourne       20</font><br /><font size="2">Sydney  42</font><br /><font
size="2">Adelaide       51</font><p><font size="2">I have tried using unions or subselects however the table is quite
largeand it takes far too long to run. The most efficient way would be to create a stored proc that uses a cursor to
loopthrough the table transforming the data into the new table structure. However I would appreciate your feeback
beforewriting this procedure?</font><p><font size="2">Theo</font><table><tr><td bgcolor="#ffffff"><font
color="#000000">______________________________________________________________________<br/> This email, including
attachments,is intended only for the addressee<br /> and may be confidential, privileged and subject to copyright. If
you<br/> have received this email in error, please advise the sender and delete<br /> it. If you are not the intended
recipientof this email, you must not<br /> use, copy or disclose its content to anyone. You must not copy or <br />
communicateto others content that is confidential or subject to <br /> copyright, unless you have the consent of the
contentowner.<br /></font></td></tr></table> 

pgsql-sql by date:

Previous
From: "Casey T. Deccio"
Date:
Subject: Re: table constraints
Next
From: Josh Berkus
Date:
Subject: Re: crosstab