Boa tarde!
Fiz a seguinte query:
Select observacoes ,ValorMaisAlto = Max(valor) ,Qtd_Itens = Count(*) From Compras Group By observacoes
Como faço para trazer a data de cadastro do produto / observação com valor mais alto neste caso?
Boa tarde!
Fiz a seguinte query:
Select observacoes ,ValorMaisAlto = Max(valor) ,Qtd_Itens = Count(*) From Compras Group By observacoes
Como faço para trazer a data de cadastro do produto / observação com valor mais alto neste caso?
Oi Leonardo, eu acho que vc vai precisar de uma subquery..
Oi Alberto, tudo bem?
Tentei fazer uma subquery mas retornou o seguinte erro:
"An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference."
De qualquer forma agradeço a ajuda, vou pesquisar aqui..
Opa Leonardo, posta a query que vc tentou.
Oi Alberto, segue :
Select observacoes ,ValorMaisAlto = Max(valor) ,Qtd_Itens = Count(*) ,Valor_MaisAlto = (Select Top 1 Max(valor) From COMPRAS Where Valor = Max(valor) Group By observacoes) From Compras Group By observacoes
Tentei declarando uma variavel tbm como em procedures, mas não deu certo usando o MAX() na subquery, e sem ele o resultado vem repetido rs
Valeu.
Essa subquery =>
Select Top 1 Max(valor) From COMPRAS Where Valor = Max(valor) Group By observacoes
Em vez de usar o where na subquery, tenta usar o having.. pq aí vc pode trabalhar baseado resultado do agrupamento. Com o where isso não vai rolar, vc não pode usar as funções de agregação no where, dado que ele não agrupou ainda.