One approach is to use joins from the same att_table onto your geom_table using aliases:<br><br><div><div>SELECT geom_table.GeometryUniqueID, geom_table.TheGeometry, Year1Scenario1.Value AS Year1Scenario1Value, Year1Scenario2.Value AS Year1Scenario2Value, Year1Scenario3.Value AS Year1Scenario3Value</div>

<div>FROM geom_table</div><div>LEFT JOIN att_table Year1Scenario1 ON Year1Scenario1.GeometryUniqueID = geom_table.GeometryUniqueID AND Year1Scenario1.Scenario = 1 AND Year1Scenario1.Year = 1</div><div>LEFT JOIN att_table Year1Scenario2 ON Year1Scenario2.GeometryUniqueID = geom_table.GeometryUniqueID AND Year1Scenario2.Scenario = 2 AND Year1Scenario2.Year = 1</div>

<div>LEFT JOIN att_table Year1Scenario3 ON Year1Scenario3.GeometryUniqueID = geom_table.GeometryUniqueID AND Year1Scenario2.Scenario = 3 AND Year1Scenario3.Year = 1</div><div><br></div><a href="http://www.postgresql.org/docs/current/static/tutorial-join.html">http://www.postgresql.org/docs/current/static/tutorial-join.html</a></div>

<div><br></div><div><a href="http://www.postgresql.org/docs/current/static/tutorial-join.html"></a>-Mike</div><div><br><div class="gmail_quote">On 19 April 2010 10:24, John Abraham <span dir="ltr"><<a href="mailto:jabraham@ucalgary.ca">jabraham@ucalgary.ca</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">We have a bunch of tables with columns like this:<br>
<br>
*GeometryUniqueID<br>
*Year<br>
*Scenario<br>
Value<br>
<br>
where * indicates the primary key<br>
<br>
(And, of course, a separate table for the Geometry<br>
<br>
*GeometryUniqueID<br>
TheGeometry)<br>
<br>
To compare values across scenarios with MapServer, QGIS, ArcGIS etc. we need it like this<br>
<br>
*GeometryUniqueID<br>
TheGeometry<br>
Year1Scenario1Value<br>
Year1Scenario2Value<br>
Year1Scenario3Value<br>
<br>
and to compare values across years we need it like this<br>
<br>
*GeometryUniqueID<br>
TheGeometry<br>
Year1Scenario1Value<br>
Year2Scenario1Value<br>
Year3Scenario1Value<br>
<br>
</div>That is, we want to compare values across scenarios and across years for the same geometry.  But we've normalized all our tables so that there is a row for each unique combination of scenario and year.  And, unfortunately, all of the GIS tools that will plot our data seem to expect the data to be in different columns in the same row (i.e., not normalized, at least not to my mind).<br>


<div class="im"><br>
Is there a standard approach to appending each column to a view so that the PostGIS layer contains comparable values in different columns?<br>
<br>
Right now we're thinking of a fairly complex select that joins the table to itself once for each year (or each scenario) but that doesn't feel right for many reasons, not the least of which we need to know the number of years (or scenarios) before we can write the view.<br>


<br>
Thanks in advance.  I don't want to reinvent the wheel here.  Crosstabbing in SQL is always hard but I bet someone on this list has solved this before.<br>
--<br>
John Abraham<br>
</div><a href="mailto:jabraham@ucalgary.ca">jabraham@ucalgary.ca</a><br>
<div><div></div><div class="h5">_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@postgis.refractions.net">postgis-users@postgis.refractions.net</a><br>
<a href="http://postgis.refractions.net/mailman/listinfo/postgis-users" target="_blank">http://postgis.refractions.net/mailman/listinfo/postgis-users</a><br>
</div></div></blockquote></div><br></div>