Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
brunoducatti
Creator
Creator

Load com where entre 2 tabelas

Pessoal, tenho uma duvida quanto ao left join do qlikview.

Tenho uma tabela de vendas e outra de compra e preciso encontrar a ultima compra antes da venda. Exemplo:

Vendas:

nf,

produto,

datanf

Compras:

notacompra,

produto,

datacompra

Quero algo do tipo "exists" que fazemos em SQL onde busque a maior "notacompra" (max) cuja datacompra seja igual ou anterior a datanf da tabela vendas.

Algo assim:

Origem:

Load

*

resident Vendas;

left join (Origem)

load

produto,

max(datacompra)

resident Compras

where datacompra <= datanf

group by produto;

O problema é que o Qlikview não reconhece o datanf pois ele não é um campo da tabela compras e quero utilizar ele como condição.

Alguém tem alguma ideia de como tratar isso?

Obrigado!

Labels (2)
1 Solution

Accepted Solutions
Not applicable

é só vc adicionar a nf nos group by...

View solution in original post

9 Replies
Marcio_Campestrini
Specialist
Specialist

Bruno

Acredito que você terá que ligar as duas tabelas através do produto e criar uma nova tabela com as informações que você quer.

Márcio Rodrigo Campestrini
brunoducatti
Creator
Creator
Author

Sim, estou ligando elas através do produto, mas como são muitos registros dos dois lado, gostaria de saber se há uma forma logo na ligação das duas tabela de já pegar apenas a maior nota de compra com data anterior a venda.

Obrigado.

Not applicable

Você precisa da ultima compra anterior a ultima venda por produto?

produto comprado 05/07/2016 vendido 10/07/2016?

brunoducatti
Creator
Creator
Author

Exato Rodrigo,  o mesmo produto pode ter mais de uma compra anterior, preciso da ultima.

obrigado

Not applicable

entendi...vou tentar algo aqui...

Not applicable

acho que isso resolva, talvez precise de alguns ajustes finos mais o conceito é este:

vendas:

LOAD * Inline [

nf,produto,datanf

1,a,10

2,a,11

1,a,9

3,a,11

3,b,9

4,b,8

3,b,10

];

ult_vendas:

Mapping LOAD produto as ult_produto,

Max(datanf) as ult_venda

Resident vendas Group by produto;

compras:

LOAD *, ApplyMap('ult_vendas',produto) as ult_venda  Inline [

notacompra,produto,datacompra

1,a,15

2,a,11

1,a,9

3,a,11

3,b,9

4,b,20

3,b,10

];

LOAD max(ult_venda) as ult_venda,max(datacompra) as ult_compra,

produto as prod

Resident compras Group by produto;

brunoducatti
Creator
Creator
Author

Obrigado Rodrigo, vou fazer alguns testes e te aviso.

brunoducatti
Creator
Creator
Author

Rodrigo, só uma duvida, eu preciso que para cada NF mostre qual a ultima compra. Seu exemplo encontra a ultima venda e a respectiva ultima compra.

Há uma forma de fazer para cada NF e produto, trazer a compra anterior a ela?

Not applicable

é só vc adicionar a nf nos group by...