none
Mostrar apenas 1 registro de tabela secundária junto com tabela primária em cursor RRS feed

  • Pergunta

  • Olá a todos,
    Tenho um cursor onde me trás dados de um pedido(tabela mãe) e os itens do pedido em xml(tabela filha) atualmente o cursor trás pedido por pedido com o fetch next, porém a tabela filha vem com todos os itens(coluna "teste") e gostaria que viesse item por item. por exemplo:

    pedido 1 item 1

    pedido 1 item 2

    pedido 1 item 3

    a ideia é utilizar uma tabela temporária, mas não tenho ideia de como fazer isso. Alguém poderia dar uma luz? Segue imagem do resultado atual e código.

    DECLARE crs CURSOR
    FOR
    select distinct a.DocEntry
    ,cardcode
    ,cardname
    ,a.CreateDate
    ,DATEDIFF(day,a.CreateDate,GETDATE()) Dias_Em_Aberto
    ,d.SlpName
    ,CONCAT(ISNULL(substring((select '/'+ ItemCode from RDR1 where RDR1.DocEntry = a.DocEntry for xml path ('')),2,9999),'')+'  '+substring((select '-'+ CAST(Onhand as varchar(200) )from OITM where OITM.ItemCode = b.ItemCode for xml path ('')),2,999),'') teste
    from ordr a
    inner join RDR1 b on a.DocEntry = b.DocEntry
    full join OSLP d on a.SlpCode =  d.SlpCode
    where docstatus = 'o' and CANCELED = 'n' order by CreateDate

    quarta-feira, 11 de setembro de 2019 19:01

Respostas

Todas as Respostas

  • Boa tarde,

    Não sei se entendi corretamente a sua questão, mas acho que você pode utilizar um Join em vez de XML se você quer obter todos os itens, cada qual em sua linha separada.

    Ou se você quer obter apenas 1 item de cada pedido, talvez consiga obter o resultado desejado com o Top em uma subquery ou com o operador Apply.

    Espero que ajude


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


    • Editado gapimex quarta-feira, 11 de setembro de 2019 19:30
    quarta-feira, 11 de setembro de 2019 19:29
  • Olá,

    Na verdade ainda estou montando tudo e me surgiu essa dúvida no caminho, o xml vai me trazer os dados de cada item juntamente com o número de estoque dele(que vem de outra tabela), é necessário deixar ambos juntos sem concat, por isso do xml. A ideia é basicamente ir diminuindo o numero de estoque(OITM) baseado na quantidade vendida(RDR1) de cada pedido de venda(ORDR), pensei em carregar os itens em uma tabela temporária para fazer essa operação e depois chamar apenas o resultado, mas ainda não testei.
    quinta-feira, 12 de setembro de 2019 13:18
  • Olá José!

    ORDR é a tabela mãe, contendo o cabeçalho de um pedido; RDR1 é a filha onde contém os itens e quantidades, OSLP é uma tabela de vendedores, OITM é a tabela de cadastro de itens, para ter acesso ao estoque.
    O modelo basicamente seria os dados do pedido como na imagem mas na coluna "teste" seria da seguinte forma:
    ZI001061 100(sendo 100 a quantidade em estoque)
    ZI001018 26
    .
    .
    .
    Espero ter explicado de uma forma de fácil entendimento.
    quinta-feira, 12 de setembro de 2019 13:21
  • Perfeitamente, José!

    A coluna teste tem apenas essas 2 informações pois a tabela ORDR e RDR1 tem o mesmo id sempre.
    quinta-feira, 12 de setembro de 2019 14:17