SQL Server - Select Max
27/08/2015
0
TABELA PRODUTOS TABELA CUSTO RESULTADO
Cod. Descr Cod.Prod. Data Vlr.Custo Cod.Prod. Descr Data Vlr.Custo
1 PRODUTO UM 1 01/01/2015 10,00 1 PRODUTO UM 10/02/2015 30,00
2 PRODUTO DOIS 1 05/01/2015 20,00 2 PRODUTO DOIS 10/02/2015 15,00
3 PODUTO TRES 1 10/02/2015 30,00 3 PRODUTO TRES 0,00
2 10/01/2015 15,00
Priscila Cardoso
Posts
27/08/2015
Alan Mario
Tentar pegar esse exemplo [url]https://www.devmedia.com.br/forum/select-max-em-mais-de-uma-coluna/12712[/url]
29/08/2015
Priscila Cardoso
TABELA PRODUTOS
COD DESCR
1 PRODUTO UM
2 PRODUTO DOIS
3 PRODUTO TRES
TABELA CUSTOS
COD.PROD. DATA CUSTO
1 01/01/2015 10,00
1 10/01/2015 15,00
1 15/02/2015 20,00
2 01/01/2015 50,00
TABELA RESULTADOS
COD.PROD. DATA CUSTO
1 15/02/2015 20,00
2 01/01/2015 50,00
3 0,00
Eu preciso dessa tabela de resultado. Agradeço muito se vc puder me ajudar.
01/09/2015
Alan Mario
01/09/2015
Randrade
Select c.produtoid, c.dt, c.valor from custo c inner join (SELECT produtoid,MAX(dt) as max_date FROM custo WHERE valor > 0 GROUP BY produtoid)a on a.produtoid = c.produtoid and a.max_date = dt
[url:descricao=Neste link você encontrará um exemplo funcional.]http://sqlfiddle.com/#!3/3fd55/1[/url]
Se precisar de explicação do código, avisa que explico aqui.
01/09/2015
Alan Mario
02/09/2015
Randrade
Olá Alan,
posso explica sim. É que ontem eu estava sem tempo, aí postei o código apenas para ajudar a autora da pergunta. Mas vamos lá.
Nesta parte do código, eu seleciono o id do produto e a data máxima do produto onde o valor seja maior que 0 (WHERE valor > 0). Esse select me retorna apenas o produto que tiver a maior data:
SELECT produtoid,MAX(dt) as max_date FROM custo WHERE valor > 0 GROUP BY produtoid
Feito isso, eu faço um Inner Join da tabela custo com o select. Isso me possibilita retornar os dados da tabela custo também.
use testes Select c.produtoid, c.dt, c.valor from custo c inner join (SELECT produtoid,MAX(dt) as max_date FROM custo WHERE valor > 0 GROUP BY produtoid)a on a.produtoid = c.produtoid and a.max_date = dt
Como estou utilizando um Inner Join, ele irá me retornar o custo apenas dos produtos retornados no select acima.
Caso a explicação esteja "um pouco" confusa, me avise que tento simplificar mais.
Clique aqui para fazer login e interagir na Comunidade :)