none
Select trazendo o registro mais recente RRS feed

  • 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.


    domingo, 17 de dezembro de 2017 22:45

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

    segunda-feira, 18 de dezembro de 2017 02:40

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

    segunda-feira, 18 de dezembro de 2017 02:40
  • Deleted
    terça-feira, 19 de dezembro de 2017 14:49
  • 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

    Deu certo do jeito que você passou. Muito obrigado pela ajuda.
    quarta-feira, 20 de dezembro de 2017 19:09