Jump to content
alextds

como faço para trazer a última data sendo também a mais próxima de outra data sql

Recommended Posts

Tenho as seguintes tabelas com os dados:

    table_ent                                            |   table_out
    cod_prod   date_ent     vl_prod       |   cod_prod   date_out       vl_prod  
    362        14/09/2015   100,00         |   362        01/10/2016     700,00
    362        15/09/2015   150,00         |   362        07/10/2016     800,00
    362        16/09/2015   10,00           |   362        29/10/2016     100,00
    362        05/10/2016   20,00           |   362        01/10/2016     800,00       
    362        06/10/2016   300,00         |
    362        07/10/2016   460,00         |
    362        08/10/2016   510,00         |
    362        23/10/2016   620,00         |
    362        24/10/2016   750,00         |
    362        25/10/2016   810,00         |
    362        30/10/2019   920,00         |

 

 

Usei um inner join com max(date)  porém o resultado gerado foi esse :

    cod_ent  date_out   vl_ent      cod_ent  vl_ent  date_ent
    ------          --------         ------            ---          ---          -------
    362         01/10/16    700         362       100      14/09/15
    362         01/10/16    800         362       10      16/09/15
    362         01/10/16    700         362       150      15/09/15
    362         01/10/16    700         362       10      16/09/15
    362         01/10/16    800         362       150      15/09/15
    362         01/10/16    800         362       100      14/09/15
    362         07/10/16    100         362       20      05/10/16
    362         07/10/16    100         362       300      06/10/16
    362         07/10/16    100         362       100      14/09/15
    362         07/10/16    100         362      10      16/09/15
    362         07/10/16    100         362      150      15/09/15
    362         29/10/16    920         362      510      08/10/16
    362         29/10/16    920         362      750      24/10/16
    362         29/10/16    920         362      460      07/10/16
    362         29/10/16    920         362      10      16/09/15

 

Preciso obter este resultado abaixo :

    cod_ent  date_out   vl_ent   cod_ent  vl_ent  date_ent
    ------   --------   ------   ---      ---     -------
    362         01/10/16    700         362      100      14/09/15
    362         01/10/16    800         362      10      16/09/15
    362         07/10/16    100         362      20      06/10/16
    362         29/10/16    920         362      750      25/10/16

 

estou usando o seguinte script:

select a.cod_prod, a.date_out, a.vl_prod, sum(b.cod_prod) as cod_prod, sum(b.vl_prod) vl_prod, max(b.date_ent) as date_ent
from table_out a
join table_ent b on b.cod_prod = a.cod_prod and b.date_ent < a.date_out
group by a.cod_prod, a.date_out, b.cod_prod, a.vl_prod, b.vl_prod
order by a.cod_prod, a.date_out;

Share this post


Link to post
Share on other sites

Não entendi a lógica da saída.

Alinha pela data mais próxima ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By edvaldo joviano de paula
      Prezados, boa tarde!
      Preciso de uma ajuda sendo possível:
       
      Tenho o seguinte cenário em uma consulta ( formação de kits de produtos tendo como produto principal um valor igual, ex: produto 1 é formado pelos produtos 2 e 3)
      select codkit, produtos from kit where codkit = 1
      ---   ----
      1    2
      1    3
      Percebem que o resultado traz o codigo do kit (1) e os produtos que compoem este kit (2,3), porem o produto 2 tambem faz parte do kit 4 junto com o produto 10 e produto 3 faz parte do kit 5 junto com o produto 11 sendo:
      kit 1 (2,3)
      kit 4 (2,10)
      kit 5 (3,11).
       
      Eu preciso de uma ajuda sobre alguma função que ao comprar os produtos 2 e 3 e estes estando na mesma nota fiscal (select produtos from notafiscal = x) traga o resultado do kit que estes dois produtos juntos formam, exemplo, ao pesquisar (select produtos from notafiscal = x) nesta nota existir os produtos 2 e 3 traga o resultado 1, se na nota existir os produtos 2 e 10 traga o resultado 4 e se existir na consulta dos itens da nota os itens 3 e 11 o resultado seja 5. Caso na pesquisa eventualmente existir por exemplo 10 unidades do item 2, 5 unidades do item 3 e 5 unidades do item 10, o resultado deve ser 1 e 4 pois 5 unidades do 2+5 unidades do 3 forma o kit 1 e 5 unidades do 2+ 5 unidades do 10 formam o kit 4.
       
      Espero ter explicado de forma a ser entendido e agradeço a ajuda.
       
    • By Viniciusr9
      Boa tarde pessoal,
      Sei que tem varios tópicos sobre esse erro, porém analisei todos e nenhum foi aplicável ao meu caso ( a maioria era porquê o pessoal esquecia do Group By ao final das Querys) . 
      Se alguém puder ajudar, agradeço . Os campos sem função estão inseridos no group by, porém o erro persiste .
       
       

       
      SELECT * FROM( select LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA AS PROJETO, E.DS_EQUIPE as EQUIPE, SUM(NVL((CC.QT_HORAS_CHEIA - SUM(AU.DT_FIM - AU.DT_INI)*24 ),CC.QT_HORAS_CHEIA)) as "ESFORÇO CALCULADO" from EQUIPE E, COLABORADOR C1, COMPETENCIA C, COMPETENCIA_COLABORADOR CC, AUSENCIAS AU where E.CD_EQUIPE=CC.CD_EQUIPE and C.CD_COMPETENCIA=CC.CD_COMPETENCIA and C1.CD_COLABORADOR=CC.CD_COLABORADOR and C1.STATUS = 1 AND C1.CD_GESTOR <> C1.CD_COLABORADOR AND AU.CD_COLABORADOR (+) = C1.CD_COLABORADOR GROUP BY E.DS_EQUIPE, LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA ) VT WHERE VT.PROJETO = ((select to_char(sysdate, 'MM') from dual)||'/'||(select to_char(sysdate, 'RRRR') from dual))  
    • By pauloozan
      De acordo com o mer abaixo,responda os seguintes exercicios :
       
      1-      A quantidade de pedidos feitos para clientes da cidade de tupã
      2-      A media de valor gasto por cliente
      3-      O Total vendido de cada produto
      4-      A quantidade vendida de cada categoria
      5-      O total gasto de cada categoria
      6-      O maior pedido de cada categoria
      7-      O menor pedido de cada categoria
      8-      O cliente que mais gastou
      9-      O cliente que menos gastou
      10-   O produto mais vendido entre cliente que moram em Tupã

    • By vinihhylian0103
      Boa noite, gostaria de saber tem alguma maneira de prevenir a inclusão de registros do mesmo valor na minha tabela. O código é o seguinte:
       
       
       
      <?php include_once('conexao.php'); $nome=$_POST['nome']; $sobrenome=$_POST['sobrenome']; $data=$_POST['data_nasc']; $rm=$_POST['rm']; $curso=$_POST['curso']; $email=$_POST['email']; $senha=$_POST['senha']; $sqlinsert = "insert into usuarios(nome, sobrenome, data_nasc, rm, curso, email, senha) values('$nome','$sobrenome','$data','$rm','$curso','$email','$senha')"; $resultado = @mysqli_query($conexao,$sqlinsert); if(!$resultado) { die('Query inválida: '. @mysqli_error($conexao)); } else { echo "<script type='text/javascript'>alert('Cadastro Concluído!');</script>"; header('Location: index.html'); } mysqli_close($conexao); ?>
          
       
    • By Viniciusr9
      Script com retorno de dias uteis no mês ( desconsiderando finais de semana e feriados também ( os mesmos cadastrados em uma tabela )), ajuda!
       
      Boa tarde,
      alguém poderia me ajudar , tentei com alguns que vi pela net , fazendo alterações mas não consegui o que gostaria ainda. Preciso de um script que dado um valor (mês/ano) ele retorne a quantidade de dias uteis nesse mês, desconsiderando os sabados e domingos e os feriados listados na tabela de feriados, em Oracle Sql puro ou PL/SQL  . Agradeço pela ajuda!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.