Hello, I have 3 tables : t1, t2 and t3 t1(posx integer, posy integer, dat timestamp, val_grid numeric) with Primary Key=(posx, posy, dat) t2(id integer, x integer, y integer) with Primary Key=(id) t3(id integer, dat timestamp, c1 numeric) with Primary Key=(id, dat)
My (very simplified) query that doesn't work : SELECT id, to_char(dat, 'YYYYMM'), CASE FLOOR((TO_NUMBER(TO_CHAR(dat,'DD'),'99')-1)/10) WHEN 0 THEN 1 WHEN 1 THEN 2 ELSE 3 END::smallint, avg(val_grid), sum(c1), (SELECT col1 FROM another_table WHERE another_table.np=id LIMIT 1) FROM (SELECT * FROM t1 ) AS t1 JOIN t2 ON (t1.posx=t2.x AND t1.posy=t2.y) FULL OUTER JOIN (SELECT * FROM t3 ) t3 USING(id, dat) --WHERE ... GROUP BY id, to_char(dat, 'YYYYMM'), CASE FLOOR((TO_NUMBER(TO_CHAR(dat,'DD'),'99')-1)/10) WHEN 0 THEN 1 WHEN 1 THEN 2 ELSE 3 END::smallint ; ERROR: subquery uses ungrouped column "t2.id" from outer query -> The problem is on the third line (the subquery) : (SELECT col1 FROM another_table WHERE another_table.np=id LIMIT 1) However, If I replace " FULL OUTER " by " LEFT OUTER " or by " RIGHT OUTER ", it works . Could you please tell me how to correct the query, to fix this problem? Regards ----- Météo-France ----- PALAYRET Jacques DCSC/GDC [email protected] Fixe : +33 561078319
