RE: Displaying rows as column headers help

From: Ken Naim <kennaim_at_gmail.com>
Date: Thu, 24 Jul 2008 23:48:55 -0400
Message-ID: <BF91C647BBDD45CEBCB47C4A9401AE8C@KenPC>


This will depend on if the number of values, and the values themselves are known in advance in which case you could use the max and case functions to filter and transpose the data. If not which I assume is the case, then you will need to process through the locus column (either using and array or a loop) and then building a second query using dynamic sql to build the query using max and case functions as the number of values are now known. I believe asktom.oralce.com has a few example of the dynamic queries that accomplish this, search for "transpose rows columns" or something along that line. He might even have a package that already accomplishes it if memory serves and I'm sure it would be more robust than something I would put together on the fly this late at night. If you can't find it, I'll put an example together for you in the morning.  

Ken Naim  


From: oracle-l-bounce_at_freelists.org [mailto:oracle-l-bounce_at_freelists.org] On Behalf Of laura pena
Sent: Thursday, July 24, 2008 4:38 PM
To: oracle-l_at_freelists.org
Subject: SQL: Displaying rows as column headers help  

So I have the following requirement:  

CODE          COL_ID  SPECIES  FISH_ID   LOCUS     ALLELES
chintest           11       23220        1            Omm1080v1  252,268
chintest           11       23220        1            Oki10v1  183,241
chintest           11       23220        1            christian  252,268
chintest           11       23220        2            Omm1080v1  256,284
chintest           11       23220        2            Oke4v1     245,245
chintest           11       23220        2            Oki10v1  187,225


output to look like Locus should be shown columns wise with Alleles under the locus name:
CODE COLID SPE FISH_ID Omm1080v1 Oki10v1 christian Omm1080v1 Oke4v1

chintest      11       23220        1         252,268
chintest      11       23220        1                           183,241
chintest      11       23220        1
252,268
chintest      11       23220        2
256,284
chintest      11       23220        2
245,245
chintest      11       23220        2                            187,225

 

 

 

Any ideas how to (even a start would be good) write this query? Any help is as always appreciated.  

Thanks,

Lizz      

--
http://www.freelists.org/webpage/oracle-l
Received on Thu Jul 24 2008 - 22:48:55 CDT

Original text of this message