Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
junior_ehlke
Creator III
Creator III

Condição entre duas tabelas - (WHERE Exists?)

Pessoal, tenho um histórico de produtos faltantes na loja e um outra tabela com pedidos de compra feitos.

Esta tabela carrega em um QVD apenas produtos faltantes diariamente:

data       - prod         - unidade

18/02/16 - produto X - 001

19/02/16 - produto X - 001

21/02/16 - produto X - 001

22/02/16 - produto X - 001


Na tabela de compra, ela me mostra todos os dias que o produto foi comprado:

data       - prod         - unidade

20/02/16 - produto X - 001


percebam que esse produto não aparece no dia 20 na tabela 1, pois neste dia, ele teve uma compra.


eu preciso listar apenas UMA vez este produto, ou seja, mostrar a data MÍNIMA a partir da sua ultima compra:

data       -  prod

21/02/16 - produto X


porém se eu escolho min(data) ele sempre me traz o dia 18, não sei como comparar com a data da tabela de compra

Labels (3)
1 Solution

Accepted Solutions
fabionakashigue
Partner - Creator
Partner - Creator

!Hamilton,

Segue o qvw de exemplo, não sei se é realmente o melhor metodo a ser implementado. Observe que criei minha tabela apenas com a minima data e dropei todas as outras.

Acredito que será necessário para seu caso juntar/criar chave com a minha Tabela1

Abs.

View solution in original post

8 Replies
junior_ehlke
Creator III
Creator III
Author

Ninguém com nenhuma ideia?

maiconmello
Creator III
Creator III

Hamilton, Veja se isso atende você :

Em anexo o modelo:

Comprastemp:

LOAD * INLINE [

    Produto, DtCompra

    1, 01/02/2016

    1, 10/02/2016

    1, 12/02/2016

    1, 20/02/2016

];

left join (Comprastemp)

load Produto, max(Previous(DtCompra)) as penultimacompra Resident Comprastemp group by Produto order by Produto,DtCompra ; //group by Produto;

junior_ehlke
Creator III
Creator III
Author

Quase isso Maicon,

não é necessariamente a penúltima data de movimento, mas sim, a menor data a partir de um intervalo.

Na tabela esta assim

data       - prod         - unidade

18/02/16 - produto X - 001

19/02/16 - produto X - 001

INTERVALO NO DIA 20

21/02/16 - produto X - 001

22/02/16 - produto X - 001

23/02/16 - produto X - 001

24/02/16 - produto X - 001


Eu preciso que me retorne o dia 21 pois no dia 20 por exemplo, ele não traz na tabela pois foi realizado uma compra.

fabionakashigue
Partner - Creator
Partner - Creator

Hamilton,

Você precisa sempre da próxima data após a compra do produto certo? Mas e quando temos mais de uma compra para o produto?

Abs

Fabio Nakashigue

junior_ehlke
Creator III
Creator III
Author

Sempre a data mínima, exemplo:

data       - prod         - unidade

18/02/16 - produto X - 001

19/02/16 - produto X - 001

INTERVALO NO DIA 20

21/02/16 - produto X - 001

22/02/16 - produto X - 001

INTERVALO NO DIA 23

INTERVALO NO DIA 24

25/02/16 - produto X - 001

26/02/16 - produto X - 001


A linha que deve permanecer é apenas a

25/02/16 - produto X - 001

junior_ehlke
Creator III
Creator III
Author

A data que define o intervalo, eu tenho em outra tabela,

data       - prod         - unidade

20/02/16 - produto X - 001

23/02/16 - produto X - 001

24/02/16 - produto X - 001


Mas não consigo filtrar as duas, o correto seria mais ou menos assim

a menor data dos produtos (tabela 1) apos a maior data da compra (tabela 2).

fabionakashigue
Partner - Creator
Partner - Creator

!Hamilton,

Segue o qvw de exemplo, não sei se é realmente o melhor metodo a ser implementado. Observe que criei minha tabela apenas com a minima data e dropei todas as outras.

Acredito que será necessário para seu caso juntar/criar chave com a minha Tabela1

Abs.

junior_ehlke
Creator III
Creator III
Author

Fábio, no seu exemplo eu apenas agrupei por unidade e produto na PegaMaxDataCompra,

adicionei mais uma loja e alterei as datas, funcionou perfeitamente.

Vou tentar usar sua lógica para o meu códio.

Logo dou o retorno.

Obrigado.