Coluna com Alias na cláusula where
Caros colegas, tenho uma consulta no SQL Server e nela coloco um alias para uma determinada coluna. Gostaria de usar esse alias na cláusula where, porém dá erro dizendo que a coluna não existe. Seria mais ou menos assim:
select nome, (valor1 * valor2) as total from contas where total > 100
Alguém sabe como resolver ? Grata
select nome, (valor1 * valor2) as total from contas where total > 100
Alguém sabe como resolver ? Grata
Wanessa
Curtidas 0
Melhor post
Soeuseijothaz
22/12/2014
Use a expressão no where: where (valor1 * valor2) > 100
Veja um script:
Resutlado:
Veja um script:
declare @temp table (nome varchar(50), valor1 int, valor2 int) insert into @temp (nome,valor1, valor2) values ('Wanda',2,5) insert into @temp (nome,valor1, valor2) values ('Ana',10,11) insert into @temp (nome,valor1, valor2) values ('Julia',100,5) insert into @temp (nome,valor1, valor2) values ('Brua',3,30) select nome,(valor1 * valor2) as total from @temp where (valor1 * valor2) > 100
Resutlado:
nome total -------------------------------------------------- ----------- Ana 110 Julia 500
GOSTEI 2
Mais Respostas
Mariana Carvalho
22/12/2014
Olá Wanessa,
está seguindo esse padrão?
[url]http://technet.microsoft.com/pt-br/library/ms187455%28v=sql.105%29.aspx[/url]
está seguindo esse padrão?
[url]http://technet.microsoft.com/pt-br/library/ms187455%28v=sql.105%29.aspx[/url]
GOSTEI 0
Alex Lekao
22/12/2014
Nao conheco outra forma a nao ser a indicada pelo Jothaz. rsrsr
GOSTEI 0
Marisiana Battistella
22/12/2014
Também é possível fazer isso utilizando o HAVING: [url]http://technet.microsoft.com/pt-br/library/ms173260%28v=sql.110%29.aspx[/url]
Deve ficar +ou- assim:
Não cheguei a testar...
Deve ficar +ou- assim:
select nome, (valor1 * valor2) as total from contas group by nome having (valor1 * valor2) > 100
Não cheguei a testar...
GOSTEI 1
Mariana Carvalho
22/12/2014
Melhor explicado mesmo.
GOSTEI 0
Alex Lekao
22/12/2014
Verdade... kkkkk
eu esqueci dele...
kkkkkk
eu esqueci dele...
kkkkkk
Também é possível fazer isso utilizando o HAVING: [url]http://technet.microsoft.com/pt-br/library/ms173260%28v=sql.110%29.aspx[/url]
Deve ficar +ou- assim:
Não cheguei a testar...
Deve ficar +ou- assim:
select nome, (valor1 * valor2) as total from contas group by nome having (valor1 * valor2) > 100
Não cheguei a testar...
GOSTEI 0
Marisiana Battistella
22/12/2014
Faz parte Alex.. =D
Dentre os exemplos citados, com qual deles a performance fica melhor? Tem alguma diferença?
Dentre os exemplos citados, com qual deles a performance fica melhor? Tem alguma diferença?
GOSTEI 0
Alex Lekao
22/12/2014
o having acredito que fique melhor.
por ser nativo do SQL ele meio que pucha a sardinha ne? rsrsr
Tem varios outros recursos que sao utilizando com funcoes de agupamento que sao muito bons.
Sempre esqueco de menciona-los, acredito que seja pq utilizo pouco. rsrsr
por ser nativo do SQL ele meio que pucha a sardinha ne? rsrsr
Tem varios outros recursos que sao utilizando com funcoes de agupamento que sao muito bons.
Sempre esqueco de menciona-los, acredito que seja pq utilizo pouco. rsrsr
GOSTEI 0
Marisiana Battistella
22/12/2014
Em termos de performance não Alex... Uma vez eu tinha lido sobre isso mas não estava lembrada.
Encontrei esta explicação [url]http://aserlorenzo.com/manSQL/Oracle/dml/funcoes/having.htm[/url]
Vejam o exemplo no final da página onde diz "Considerações sobre desempenho entre WHERE e HAVING"
Entre o WHERE e o HAVING, use sempre o WHERE.
Encontrei esta explicação [url]http://aserlorenzo.com/manSQL/Oracle/dml/funcoes/having.htm[/url]
Vejam o exemplo no final da página onde diz "Considerações sobre desempenho entre WHERE e HAVING"
Entre o WHERE e o HAVING, use sempre o WHERE.
GOSTEI 0
Alex Lekao
22/12/2014
Blz...
Deve ser poque tem que agrupar e tal...
Mas honestamente uso muito pouco o having(quase zero utilizacao. rsrsr).
Deve ser poque tem que agrupar e tal...
Mas honestamente uso muito pouco o having(quase zero utilizacao. rsrsr).
GOSTEI 0
Marisiana Battistella
22/12/2014
O WHERE filtra as informações fazendo com que menos linhas sejam verificadas, já o HAVING trás todas as linhas na consulta, agrupa e apenas depois filtra os dados que devem ser retornados.
GOSTEI 0
Mariana Carvalho
22/12/2014
Só acompanhando os comentarios, conhecimentos adquiridos.
GOSTEI 0
Alex Lekao
22/12/2014
entendi...
Atualmente estou usando outras clausulas, para ranqueamento, essas coisas, sao bem interessantes, tinha uma coisas que eu fazia que demora um tempao para fazer agora usando essa configucao ele demora bem menos que eu imaginava, melhorou a performance em 90%.
Atualmente estou usando outras clausulas, para ranqueamento, essas coisas, sao bem interessantes, tinha uma coisas que eu fazia que demora um tempao para fazer agora usando essa configucao ele demora bem menos que eu imaginava, melhorou a performance em 90%.
GOSTEI 0
Marisiana Battistella
22/12/2014
90% de melhora é uma vitória!!
Se não for pedir demais... Quais são as clausulas q vc está usando?
Poderia citar algumas?
Se não for pedir demais... Quais são as clausulas q vc está usando?
Poderia citar algumas?
GOSTEI 0
Alex Lekao
22/12/2014
Nesse caso em especifico eu utilizei a clausula over.
Clausula Over
Estou utilizando para fazer soma e agrupada por vendedores e clientes, etc.
Estou testando para utilizar com Ranqueamento.
Ele me proporcionou um ganho de 90% de performance, quase nao acreditei qdo fiz a substituicao.
Fiz a substituicao de uma subselect por ela, e foi extremamente util.
Ela me parece polivalente. rsrsr
Clausula Over
Estou utilizando para fazer soma e agrupada por vendedores e clientes, etc.
Estou testando para utilizar com Ranqueamento.
Ele me proporcionou um ganho de 90% de performance, quase nao acreditei qdo fiz a substituicao.
Fiz a substituicao de uma subselect por ela, e foi extremamente util.
Ela me parece polivalente. rsrsr
GOSTEI 0
Marisiana Battistella
22/12/2014
Que bacana!
Eu usei uma vez essa cláusula no Oracle... Para os casos que ela pode ser aplicada, é mesmo milagrosa! =D
Se não me engano, esse é mais um dos recursos que estão disponíveis nas versões mais recentes, assim como o PIVOT.
Eu usei uma vez essa cláusula no Oracle... Para os casos que ela pode ser aplicada, é mesmo milagrosa! =D
Se não me engano, esse é mais um dos recursos que estão disponíveis nas versões mais recentes, assim como o PIVOT.
GOSTEI 1
Alex Lekao
22/12/2014
Olha, nao sei dizer para vc qdo comecou a funcionar exatamente, utilizo o 2008R2 e tanto o Over qto o Pivot funcionam.
Acredito que tenham comecado a partir do 2005, mas nao sei, nem pesquisei a respeito. rssr
Acredito que tenham comecado a partir do 2005, mas nao sei, nem pesquisei a respeito. rssr
GOSTEI 0
Marisiana Battistella
22/12/2014
Acho q sim Alex, eu estava totalmente desinformada.... hehehe
Pesquisei no Oracle, existe na versões mais antigas também. Eu conheci o Oracle a partir da versão 10g.
Pesquisei no Oracle, existe na versões mais antigas também. Eu conheci o Oracle a partir da versão 10g.
GOSTEI 0
Alex Lekao
22/12/2014
Bom dia!!!
Blz...
Acho que eh quase impossivel conhecermos tudo. kkkk
Blz...
Acho que eh quase impossivel conhecermos tudo. kkkk
GOSTEI 0