none
Selecionar apenas um registro de várias linhas RRS feed

  • Pergunta

  • Bom dia.

    Criei um script para trazer o valor rateado de frete em nossas NF's.
    Porém, em cada ordem de compra, tenho várias linhas onde o frete é lançado...
    Este valor eu calculo assim:
    Valor do Frete / Qtde do item lançado na OC
    Eu gostaria de pegar apenas o último item.
    Neste select abaixo, eu trago todos os itens da compra, não consegui colocar apenas o último.
    Obrigado !
    Abraços.

    SELECT I.ITEMID ITEM, I.INVOICEID NF, I.TRANSREFID OC, (SELECT P.DIMENSION3_ FROM PURCHTABLE P WHERE P.PURCHID = I.TRANSREFID AND I.DATAAREAID = P.DATAAREAID)FINALIDADE,
    I.COSTAMOUNTPOSTED/(SELECT SUM(PL.QTYORDERED) FROM PURCHLINE PL WHERE I.ITEMID = PL.ITEMID AND I.TRANSREFID = PL.PURCHID AND I.DATAAREAID = PL.DATAAREAID AND PL.QTYORDERED >0)VALOR_RATEADO
    FROM INVENTTRANS I 
    WHERE
    I.QTY = 0
    AND I.TRANSREFID NOT LIKE 'EST%'
    group by I.TRANSREFID, I.ITEMID, I.INVOICEID, I.DATAAREAID, I.COSTAMOUNTPOSTED
    ORDER BY 3

    quinta-feira, 26 de junho de 2014 14:33

Respostas

  • Eu tenho um exemplo de como fazer isso, acredito que o SELECT que você quer fazer é pra pegar o ultimo item que é a ULTIMA DATA, caso for isso mesmo e exemplo vai dar certo.

    SELECT VA.ID_CONTA, VA.VALOR_ATUAL  
    FROM  
      VALOR_ATUAL  VA  
      INNER JOIN  
      (SELECT ID_CONTA, MAX(DATA) AS MAIOR_DATA FROM VALOR_ATUAL GROUP BY ID_CONTA ) RECENTES  
      ON VA.ID_CONTA = RECENTES.ID_CONTA  
      AND VA.DATA = RECENTES.MAIOR_DATA 


    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta matfurrier quinta-feira, 26 de junho de 2014 16:09
    quinta-feira, 26 de junho de 2014 14:41

Todas as Respostas

  • Eu tenho um exemplo de como fazer isso, acredito que o SELECT que você quer fazer é pra pegar o ultimo item que é a ULTIMA DATA, caso for isso mesmo e exemplo vai dar certo.

    SELECT VA.ID_CONTA, VA.VALOR_ATUAL  
    FROM  
      VALOR_ATUAL  VA  
      INNER JOIN  
      (SELECT ID_CONTA, MAX(DATA) AS MAIOR_DATA FROM VALOR_ATUAL GROUP BY ID_CONTA ) RECENTES  
      ON VA.ID_CONTA = RECENTES.ID_CONTA  
      AND VA.DATA = RECENTES.MAIOR_DATA 


    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta matfurrier quinta-feira, 26 de junho de 2014 16:09
    quinta-feira, 26 de junho de 2014 14:41
  • Jean, perfeito cara !!!

    Era isso mesmo, no caso, a minha ficou assim:

    SELECT I.ITEMID ITEM, I.INVOICEID NF, I.TRANSREFID OC, RECENTES.FINALIDADE FINALIDADE,
    I.COSTAMOUNTPOSTED/RECENTES.QTD VALOR_RATEADO
    FROM INVENTTRANS I INNER JOIN
    (SELECT PL.PURCHID, MAX(PL.ITEMID) AS ITEMID, PL.DATAAREAID,SUM(PL.QTYORDERED)QTD, PL.DIMENSION3_ FINALIDADE  
    FROM PURCHLINE PL GROUP BY PL.PURCHID, PL.DATAAREAID, PL.DIMENSION3_) RECENTES ON 
    I.ITEMID = RECENTES.ITEMID AND I.TRANSREFID = RECENTES.PURCHID AND I.DATAAREAID = RECENTES.DATAAREAID
    WHERE
    I.QTY = 0
    AND RECENTES.QTD > 0
    AND I.TRANSREFID NOT LIKE 'EST%'
    group by I.TRANSREFID, I.ITEMID, I.INVOICEID, I.DATAAREAID, I.COSTAMOUNTPOSTED, RECENTES.FINALIDADE, RECENTES.QTD
    ORDER BY 3

    quinta-feira, 26 de junho de 2014 16:10
  • Eu tenho um exemplo de como fazer isso, acredito que o SELECT que você quer fazer é pra pegar o ultimo item que é a ULTIMA DATA, caso for isso mesmo e exemplo vai dar certo.

    SELECT VA.ID_CONTA, VA.VALOR_ATUAL  
    FROM  
      VALOR_ATUAL  VA  
      INNER JOIN  
      (SELECT ID_CONTA, MAX(DATA) AS MAIOR_DATA FROM VALOR_ATUAL GROUP BY ID_CONTA ) RECENTES  
      ON VA.ID_CONTA = RECENTES.ID_CONTA  
      AND VA.DATA = RECENTES.MAIOR_DATA 


    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    Jean,

    fiquei com apenas uma dúvida num teste que realizei aqui....
    Eu consegui trazer todos os últimos itens das Ordens de Compra, mas, eu preciso que, seja trazida apenas a última ordem de compra de cada filial (no nosso caso é a finalidade PL.DIMENSION3_).
    Como faço para utilizar o MAX no item e também no nº da Ordem PURCHID ?

    Obrigado !!

    quinta-feira, 26 de junho de 2014 18:27