problem with 'insert into...'
От | William D. McCoy |
---|---|
Тема | problem with 'insert into...' |
Дата | |
Msg-id | 199806231925.PAA15195@aeolus.geo.umass.edu обсуждение исходный текст |
Ответы |
[SQL] problem with 'insert into...': ADDITIONAL EXAMPLES
|
Список | pgsql-sql |
I am trying to work around the lack of an outer join function in postgreSql. I am trying to construct a full outer join of two identically defined tables, each of which contains (along with other data), a value for a particular lab sample. I have come across the following problem. When I execute the following query it returns the expected result (816 rows returned). select f.lab_no, f.prep_no, avg(f.fai), NULL, f.peak_values from free_ratios f where not exists ( select * from hyd_ratios h where h.lab_no = f.lab_no and h.prep_no = f.prep_no and h.run_no = f.run_no ) group by f.peak_values, f.lab_no, f.prep_no; However, when I add an 'insert into table_name' to the query like this: insert into both_ratios_avg select f.lab_no, f.prep_no, avg(f.fai), NULL, f.peak_values from free_ratios f where not exists ( select * from hyd_ratios h where h.lab_no = f.lab_no and h.prep_no = f.prep_no and h.run_no = f.run_no ) group by f.peak_values, f.lab_no, f.prep_no; I get the following error message: ERROR: parser: aggregates not allowed in GROUP BY clause There are clearly no aggregates in my GROUP BY clause. I get the same error message with the following query, although, just like the example above, the select by itself works fine: insert into both_ratios_avg select f.lab_no, f.prep_no, avg(fai), avg(hai), f.peak_values from free_ratios f, hyd_ratios h where f.lab_no = h.lab_no and f.prep_no = h.prep_no and f.run_no = h.run_no group by f.peak_values, f.lab_no, f.prep_no; Just to make things more interesting, the following very similar query works fine and does not give any error: insert into both_ratios_avg select h.lab_no, h.prep_no, NULL, avg(hai), h.peak_values from hyd_ratios h where not exists ( select * from free_ratios f where f.lab_no = h.lab_no and f.prep_no = h.prep_no and f.run_no = h.run_no ) group by h.peak_values, h.lab_no, h.prep_no; (This is another third of my full outer join workaround.) Any ideas about what might be happening here? -- William D. McCoy Geosciences University of Massachusetts Amherst, MA 01003
В списке pgsql-sql по дате отправления: