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, imagene b 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. ---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match