Hi,
I have a table like so
CREATE TABLE imagene (
id int
bioassay_id int
gene_id text
s_row int
s_column int
s_meta_row int
s_meta_column int
sig_median numeric
bkg_median numeric
);
Rows are unique on (bioassay_id, gene_id, s_row, s_column, s_meta_row,
s_meta_column)
They are grouped like this (note, the counts will not always be the same)
cabbage=# select bioassay_id, count(*) from imagene group by bioassay_id;bioassay_id | count
-------------+------- 106 | 10944 107 | 10944
And I need to generate an output like this......
bioassay_id=106 bioassay_id=107 ---------------------- ----------------------
gene_id, sig_median, bkg_median, sig_median, bkg_median
I can do something like this
SELECT a.gene_id, a.sig_median, a.bkg_median, b.sig_median, b.bkg_median FROM imagene a,
imageneb WHERE a.s_meta_row = b.s_meta_row AND a.s_meta_col = b.s_meta_col AND a.s_row = b.s_row AND
a.s_column = b.s_column AND a.bioassay_id = 106 AND b.bioassay_id = 107;
But this is quite slow... And not generic as I may need to generate the
output for more than two bioassay_ids. Also I may need to do an outer join
to make sure I get all rows from both data sets?
I am not sure if a crosstab function will do this?
Any ideas of pointers would be greatly appreciated
Thanks
Adam
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.