Array
(
)

SINTAXE MAX SQL SERVER

Carlos Felix
   - 08 mar 2016

Ola pessoal. Minha primeira vez aqui. Preciso fazer uma select no sqlserver na qual busco dados em três tabelas, porem preciso filtrar o maior valor de estoque. Segue abaixo os nomes das tabelas e o exemplo de minha consulta.
Tableas=> Produtos, estoque, preços
Select P.CODPROD, P.DESCRPROD, P.REFFORN, P.MARCA, E.ESTOQUE, V.VLRVENDA
FROM TGFPRO P, TGFEST E, TGFEXC V
WHERE P.CODPROD = E.CODPROD AND P.CODPROD = V.CODPROD AND MARCA = 'GERAL'
Como cada produto possui varias id's na tabela de preços a select me retorna valores duplicados, triplicados,..... etc
Preciso utilizar o MAX para filtrar o MAIOR valor de estoque.

Marcos P
   - 08 mar 2016

Sempre que inserir código no post utilize a tag <Inserir Código>, isso facilita o entendimento do problema...

Assumindo que todas as demais colunas ( P.CODPROD, P.DESCRPROD, P.REFFORN, P.MARCA, E.ESTOQUE ), são únicas, fica :

#Código

SELECTP.CODPROD, P.DESCRPROD, P.REFFORN, P.MARCA, E.ESTOQUE, MAX(V.VLRVENDA) as MaxValor
FROM TGFPRO P, TGFEST E, TGFEXC V
WHERE P.CODPROD = E.CODPROD AND P.CODPROD = V.CODPROD AND MARCA = 'GERAL'
GROUP BY P.CODPROD, P.DESCRPROD, P.REFFORN, P.MARCA, E.ESTOQUE

Se as demais colunas não forem únicas, teremos repetições no resultado da query.

Nesse caso, retire as colunas desnecessárias ( do select e do group by ).

Carlos Felix
   - 08 mar 2016

Ok, Marcos. Problema resolvido. Muito obrigado!!!