Em 31 de agosto de 2012 22:06, Euler Taveira <[email protected]> escreveu: (corte) > Não. Porque do ponto de vista da execução, a consulta acima não faz o menor > sentido. A ordem natural das coisas diz que primeiro os dados são filtrados > pelas condições informadas na cláusula WHERE e *depois* eles são projetados > (aka as colunas são escolhidas); trocando em miúdos, "CampoC" não existe ao > ser executada a condição informada na cláusula WHERE.
E não faz sentido mesmo. Este tipo de truque existe em outros SGBDs gambiarrentos - no ponto de vista da implementação SQL. Querem facilitar mas na verdade acabam transformando o código SQL em uma grande torre de Babel com suas "extensões". Seu problema pode ser resolvido de duas formas: 1) SELECT table_alias.CampoC FROM ( Select (CampoA + CampoB) as CampoC From Tabela ) table_alias WHERE table_alias.CampoC = XValor Onde "table_alias" é o nome que você quiser. Bem, nem tanto... há limites (não ter espaços, não começar com números, não ser uma palavra reservada do PostgreSQL...) Ou simplesmente: 2) Select (CampoA + CampoB) as CampoC >From Tabela Where (CampoA + CampoB) = XValor Não sei dizer qual seria mais performática, mas eu prefiro a primeira opção. -- TIAGO J. ADAMI http://www.adamiworks.com _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
