Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • 0
marcos antonio duarte

TRAZER ULTIMO VALOR DE ENTRADA DO PRODUTO

Pergunta

Tenha uma tabela com dados de codigo de produto (number), produto (char) ,data de entrada do ultimo valor do produto formato (date) e valor do produto (number[9,4] e ), como faço para trazer o campo valor do produto referente a ultima data de valor?

 

cod_produto |      produto        | data entrada   |   valor  

1                            arroz              01/01/2017     |   5,80

1                            arroz              03/01/2017     |   6,10

2                            feijao             05/02/2017     |   8,00

3                            macarrão      01/01/2017     |   2,5

3                            macarrão      15/01/2017     |   2,8

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 respostas a esta questão

Recommended Posts


  • Conteúdo Similar

    • Por cfsardinha
      Bom dia, pessoal.
      Sou nova aqui no fórum e estou necessitando de uma grande ajuda.
      Tenho uma sentença SQL (banco Oracle) que calcula o saldo de horas extras de cada funcionário. Nela mostra se o funcionário está com horas positivas ou negativas. A questão é que agora pediram para fazer esse cálculo por setor e não por funcionário. Ou seja, preciso somar todos os funcionários do setor e fazer um totalzão das horas positivas e outro das horas negativas do setor.
      Busquei aqui no fórum e o mais próximo que achei foi esse tópico fechado aqui:
      https://forum.imasters.com.br/topic/496657-calculando-positivos-e-negativos-da-soma-total/
      Nesse tópico sugeria criar a linha abaixo usando a query como uma tabela virtual:
      SELECT (CASE WHEN total < 0 THEN valor ELSE 0 END) negativo,
             (CASE WHEN total >= 0 THEN valor ELSE 0 END) positivo
      FROM
      No entanto, quando fui tentar adaptar para a minha sentença SQL, não funcionou. 
      Não sou especialista em SQL e não sei se fiz algo de errado ou se o caso desse tópico em questão não seria a solução para o meu caso.
      A minha sentença atual é essa abaixo (não fui eu quem fez). Agradeço qualquer ajuda para essa pessoa leiga em SQL.
       
       SELECT DISTINCT
      Y.* ,
      TRUNC((trunc(VALOR_HORA * 1.5,2)) *(TO_NUMBER(SUBSTR(HORAS, 0, INSTR(HORAS,
      ':')-1)) + TRUNC(TO_NUMBER(SUBSTR(HORAS, INSTR(HORAS, ':')+1, 99)) /60,2)),2)
      AS SOMA_MAIS_50PORCENTO
      FROM
      (
              SELECT 
                      X.CODCOLIGADA,
                      X.CHAPA,
                      X.NOME,
                      X.NOMEFANTASIA,
                      X.CODSECAO,
                      X.DESCRICAO, 
                      X.FUNCAO,
              ROUND(SALARIO, 2) AS VALOR_HORA,
              TO_CHAR(TRUNC((HORAS * 60) / 3600), 'FM9900') || ':' || TO_CHAR(TRUNC
      (MOD((MINUTOS * 60), 3600) / 60), 'FM00') AS HORAS
              FROM ( 
                      SELECT  
                              A.CODCOLIGADA,
                              A.CHAPA,
                              B.NOME,
                              C.NOMEFANTASIA,
                              B.CODSECAO,
                              D.DESCRICAO,
                              E.NOME AS FUNCAO,
                              B.SALARIO / B.JORNADAMENSAL * 60  AS SALARIO,
                              B.SALARIO SALARIO_ORIGINAL,
                              B.JORNADAMENSAL,
                              CASE WHEN
                              CAST(((SUM
      (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX
      TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))-
                              SUM(FALTA+ATRASO))) AS DECIMAL(18,2)) >=0 THEN 
                              CAST(((SUM
      (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX
      TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))-
                              SUM(FALTA+ATRASO))) AS DECIMAL(18,2)) ELSE
                              -CAST(((SUM
      (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX
      TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))-
                              SUM(FALTA+ATRASO))) AS DECIMAL(18,2))
                              END AS MINUTOS,
                              CAST(((SUM
      (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX
      TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))-
                              SUM(FALTA+ATRASO))) AS DECIMAL(18,0)) AS HORAS
                      FROM ABANCOHORFUN A 
                      LEFT OUTER JOIN PFUNC B ON A.CODCOLIGADA=B.CODCOLIGADA AND
      A.CHAPA=B.CHAPA 
                      LEFT OUTER JOIN GFILIAL C ON B.CODCOLIGADA=C.CODCOLIGADA AND
      B.CODFILIAL=C.CODFILIAL
                      LEFT OUTER JOIN PSECAO D ON B.CODCOLIGADA=D.CODCOLIGADA AND
      B.CODSECAO=D.CODIGO
                      LEFT OUTER JOIN PFUNCAO E ON E.CODCOLIGADA = B.CODCOLIGADA AND
      E.CODIGO = B.CODFUNCAO 
                      WHERE B.CODSITUACAO<>'D' 
                                    AND A.DATA >= :PLN_C3_D
      AND A.DATA <= :PLN_C4_D
      AND A.CODCOLIGADA = :PLN_C2_N
                      
                      GROUP BY  A.CODCOLIGADA,
                                          A.CHAPA,
                                          B.NOME,
                                          C.NOMEFANTASIA,
                                          B.CODSECAO,
                                          D.DESCRICAO,
                                          E.NOME,
                                          B.SALARIO / B.JORNADAMENSAL,
                                          B.SALARIO,
                                          B.JORNADAMENSAL
                      ) X
              ) Y

      ORDER BY 5,10
       
    • Por marcos antonio duarte
      como faço para trazer uma soma dessa linha de comando:
       round(vlr.pre_pro_valor * sum(loc.loc_area) over (partition by lnc.id_recur_lanc,loc.loc_area  ) / sum(loc.loc_area) over (partition by lnc.id_recur_lanc) * ins.insum_qtde,3)  as Gasto_total,
       
    • Por marcos antonio duarte
      eu tenho uma query que tem muitos relacionamentos where, porem tem um dado que preciso buscar que só virá usando uma left join, porem não sou familiarizado com essa função left join preciso de uma ajudinha.
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.