Usuário com melhor resposta
Select trazendo o registro mais recente

Pergunta
-
Galera,
Tenho um formulário composto por duas tabelas. Na master(MIX_PRODUTOS) eu tenho os campos: MIX_PRODUTOS(PK), DATA_HORA, ENTIDADE, MARCA, DESCRICAO. E na detail(MIX_PRODUTOS_ITENS) eu tenho os campos: MIX_PRODUTOS_ITENS, MIX_PRODUTOS, CODIGO_BARRAS, DESCRICAO, VALOR, DESCONTO, DESCONTO_PROMOCIONAL.
Nesse formulário tenho vários registros, o código de barras, por exemplo, "11111111111"que tenho no registro X, também tenho no registro Y, só que com outro valor. O que eu preciso é montar um select trazendo o campo "VALOR" mais recente de cada um dos códigos de barras que tenho na tabela MIX_PRODUTOS_ITENS. Tentei usar MAX, já que na tabela MIX_PRODUTOS eu tenho o campo DATA_HORA e posso relacionar as duas tabelas através do campo MIX_PRODUTOS, mas, não deu muito certo. Tentei usar subselect também e não tive o resultado que preciso. Alguém poderia dar uma ajuda?
Desde já, muito obrigado.
Respostas
-
Boa noite,
Não sei se entendi corretamente a questão mas experimente fazer uns testes dessa forma:
with CTE_RN as ( select *, row_number() over(partition by i.CODIGO_BARRAS order by m.DATA_HORA desc) as RN from MIX_PRODUTOS as m inner join MIX_PRODUTOS_ITENS as i on i.MIX_PRODUTOS = m.MIX_PRODUTOS ) select * from CTE_RN where RN = 1
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Daniel Martins Lobo terça-feira, 19 de dezembro de 2017 14:02
- Não Marcado como Resposta Daniel Martins Lobo terça-feira, 19 de dezembro de 2017 14:02
- Marcado como Resposta Daniel Martins Lobo quarta-feira, 20 de dezembro de 2017 18:39
Todas as Respostas
-
Boa noite,
Não sei se entendi corretamente a questão mas experimente fazer uns testes dessa forma:
with CTE_RN as ( select *, row_number() over(partition by i.CODIGO_BARRAS order by m.DATA_HORA desc) as RN from MIX_PRODUTOS as m inner join MIX_PRODUTOS_ITENS as i on i.MIX_PRODUTOS = m.MIX_PRODUTOS ) select * from CTE_RN where RN = 1
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Daniel Martins Lobo terça-feira, 19 de dezembro de 2017 14:02
- Não Marcado como Resposta Daniel Martins Lobo terça-feira, 19 de dezembro de 2017 14:02
- Marcado como Resposta Daniel Martins Lobo quarta-feira, 20 de dezembro de 2017 18:39
-
-
Boa noite,
Não sei se entendi corretamente a questão mas experimente fazer uns testes dessa forma:
with CTE_RN as ( select *, row_number() over(partition by i.CODIGO_BARRAS order by m.DATA_HORA desc) as RN from MIX_PRODUTOS as m inner join MIX_PRODUTOS_ITENS as i on i.MIX_PRODUTOS = m.MIX_PRODUTOS ) select * from CTE_RN where RN = 1
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br