Thread: column alias and group by/having/order
Hi I found some strange column alias behaviour: select val1+val2 as val from some_table group by val; result - OK select val1+val2 as val from some_table order by val; result - OK select val1+val2 as val from some_table group by val having val1+val2>1; result - OK select val1+val2 as val from some_table group by val having val>1; ERROR: Attribute "val" not found Is it a bug or a feature? Regards, Tomasz Myrta ---------------------------------------------------------------------------------------------------------------- PostgreSQL7.3.4 on i386-pc-linux-gnu, compiled by GCC i386-linux-gcc (GCC) 3.3.2 20031005 (Debian prerelease)
> select val1+val2 as val > from some_table > group by val having val>1; > ERROR: Attribute "val" not found > > Is it a bug or a feature? It's a mis-feature that group by accepts aliases of the select list. Having is proper.
Tomasz Myrta <jasiek@klaster.net> writes: > I found some strange column alias behaviour: That's how it is. The fact that you can reference output-column aliases at all in GROUP BY or ORDER BY is a wart, because it conflicts with the logical model of query evaluation --- the output list should be computed last. We have extended the SQL92 requirement (unadorned aliases in ORDER BY) to allow the same in GROUP BY, but we don't take it to the level of allowing them inside arbitrary expressions. regards, tom lane