none
Unificar itens da consulta com a data mais atual RRS feed

  • Pergunta

  • Pessoal, gostaria de obter o retorno da consulta com a data mais atual de lançamento.

    Ex. no print o código 002498 tem três lançamentos e a entrada mais atual é de 18/07/2017.

    segue o código abaixo;

    select distinct Top 6000 b.ItemCode, a.AvgPrice, c.Price, d.DocDate, d.Serial from OITW a
    inner join OITM b on a.ItemCode = b.ItemCode
    inner join PCH1 c on a.ItemCode = c.ItemCode
    inner join OPCH d on d.DocEntry = c.DocEntry
    where a.WhsCode = '01'
    and a.ItemCode Between '000001' and '060000'
    and d.CardName != 'BIODENTAL MEDICAL DIST LTDA'
    --and b.ItemCode = '001271'
    group by b.ItemCode, a.AvgPrice, c.Price, d.DocDate, d.Serial
    order by b.ItemCode asc

    quarta-feira, 22 de novembro de 2017 19:26

Respostas

  • Boa noite,

    Experimente dessa forma:

    with CTE_RN as 
    (
        select 
            b.ItemCode, 
            a.AvgPrice, 
            c.Price, 
            d.DocDate, 
            d.Serial,
            ROW_NUMBER() OVER(PARTITION BY b.ItemCode ORDER BY d.DocDate DESC) as RN
        from OITW a
        inner join OITM b on a.ItemCode = b.ItemCode
        inner join PCH1 c on a.ItemCode = c.ItemCode
        inner join OPCH d on d.DocEntry = c.DocEntry
        where 
            a.WhsCode = '01' and 
            a.ItemCode Between '000001' and '060000' and 
            d.CardName <> 'BIODENTAL MEDICAL DIST LTDA' 
    )
    
    select *
    from CTE_RN
    where RN = 1
    order by ItemCode asc

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 22 de novembro de 2017 21:42

Todas as Respostas

  • Boa noite,

    Experimente dessa forma:

    with CTE_RN as 
    (
        select 
            b.ItemCode, 
            a.AvgPrice, 
            c.Price, 
            d.DocDate, 
            d.Serial,
            ROW_NUMBER() OVER(PARTITION BY b.ItemCode ORDER BY d.DocDate DESC) as RN
        from OITW a
        inner join OITM b on a.ItemCode = b.ItemCode
        inner join PCH1 c on a.ItemCode = c.ItemCode
        inner join OPCH d on d.DocEntry = c.DocEntry
        where 
            a.WhsCode = '01' and 
            a.ItemCode Between '000001' and '060000' and 
            d.CardName <> 'BIODENTAL MEDICAL DIST LTDA' 
    )
    
    select *
    from CTE_RN
    where RN = 1
    order by ItemCode asc

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 22 de novembro de 2017 21:42
  • Bulcão,

    Mas você deseja agrupar ou simplesmente trazer o dado que contem a data mais atual?


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 22 de novembro de 2017 22:05
  • Preciso agrupar e retornar o dado que contem a data mais atual.
    quinta-feira, 23 de novembro de 2017 12:30
  • Obrigado Gapimex, exatamente dessa forma, fiz alguns ajustes para alocar mais alguns campos.

    quinta-feira, 23 de novembro de 2017 12:35