Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Sr(as). Boa tarde!
Alguém sabe como posso resolver a seguinte situação.
Tenho duas tabelas que possuem o numero do contrato, data da venda em comum.
Porem, o relacionamento delas é de N pra N.
Tenho para um mesmo contrato em uma mesma data de venda vário registros. Esta Situação é comum entre as duas tabelas.
Tabela A
Numero contrato | Data Venda |
---|---|
0001 | 23/10/2014 |
0001 | 23/10/2014 |
0002 | 22/10/2014 |
0002 | 22/10/2014 |
0002 | 22/10/2014 |
Tabela B
Numero Contrato | Data Venda | Data Pagamento |
---|---|---|
0001 | 23/10/2014 | 27/10/2014 |
0001 | 23/10/2014 | 27/10/2014 |
0002 | 22/10/2014 | 24/10/2014 |
0002 | 22/10/2014 | 24/10/2014 |
0002 | 22/10/2014 | 24/10/2014 |
0002 | 22/10/2014 | 24/10/2014 |
Conforme exemplo acima, o cliente 0002 fez três compras, mas consta 4 pagamentos, pois pagou uma fatura em duplicidade.
Não estou conseguindo relacionar estas tabelas.
Alguém pode mostrar o caminho das pedras ?
Obrigado!
Só lembrando que a primeira tabela não têm data de pagamento.
Eu ainda sugiro que você crie um count([Numero Contrato] & '|' & [Data Venda]) para compras e um count([Numero Contrato] & '|' & [Data Venda]) para pagamentos já no script para poder controlar esses erros ou exceções.
É simples.
Você vai criar uma chave composta por Numero Contrato e Data Venda, nas duas tabelas e manter o valor dos campos em uma só delas.
Outra solução seria concatenar as duas tabelas.
[Numero Contrato] & '|' & [Data Venda] as Key_Venda
Antonio, boa tarde.
Apenas para detalhar melhor o que o Luciano colocou, a composição da carga seria assim:
Imagine que sua tabela seja:
A primeira que contem somente Numero contrato e venda.. seria por exemplo a Tabela de vendas e a segunda seria tabela pagamento, entao seria.
Vendas:
Load
[Numero Contrato] & '|' & [Data Venda] as Key_Venda
[Numero Contrato] as NumeroContrato1
[Data Venda] as DataVenda1
o resto dos campos
from *****
Pagamentos:
Load
[Numero Contrato] & '|' & [Data Venda] as Key_Venda
[Numero Contrato] as NumeroContrato2
[Data Venda] as DataVenda2
o resto dos campos
From ****
Desta forma o relacionamento entre as tabelas se dará apenas pela KEY_VENDA.
Espero ter ajudado.
Bom dia Thiago!
Então, o problema é que estas tabelas estão sendo carregadas em um painel que já esta em produção.
Para minha necessidade o ideal seria a união das duas tabelas em um unica, porem a dificuldade esta justamente em unir elas. Como é N para N ela esta multiplicando os valores
No exemplo da tabela que eu postei, tenho o contrato 0002 que na tabela A possui três registros com mesma data.
Na tabela B "pagamento" possui quatro registros, pois o cliente pagou uma fatura em duplicidade.
Quando faço um join das tabelas ele mostra muito mais registros do que tenho.
O inverso também pode acontecer, exemplo:
O mesmo Cliente efetua mais de uma compra no mesmo dia, porem efetua o pagamento somente de uma compra.
Não tenho nenhum campo que faça a distinção das linhas. Tabela A ,é Contrato, Data Venda, Nome do Produto e Valor da Venda. e para a Tabela B é Contrato, Data Venda e Data Pagamento.
Esse problema esta mais para modelagem do que o próprio qlikview. Pelo menos é o que acho.
Antonio,
Pelo que vi uma tabela é a realização da venda e a outra o pagamento desta venda.
Se você concatenar as duas tabelas, criando uma flag para identificar o tipo do registro (V = Venda e P = Pagamento), assim, não haveria duplicidade de linhas e você pela flag faria os filtros necessários.
Ex:
TABELAO:
LOAD
CONTRATO,
DATAVENDA,
'' DATAPAGAMENTO,
'V' AS TIPOREGISTRO
FROM TABELA1;
CONCATENATE
LOAD
CONTRATO,
DATAVENDA,
DATAPAGAMENTO,
'P' AS TIPOREGISTRO
FROM TABELA2;
Será que ajuda?
Abraços.
Antonio, bom dia!
Utilize o que o Rogério sugeriu, é a forma mais tranquila para transformar 2 tabelas em uma fato.
Qualquer dificuldade, poste aqui e tentaremos lhe auxiliar.
Só lembrando que a primeira tabela não têm data de pagamento.
Eu ainda sugiro que você crie um count([Numero Contrato] & '|' & [Data Venda]) para compras e um count([Numero Contrato] & '|' & [Data Venda]) para pagamentos já no script para poder controlar esses erros ou exceções.
Bom dia Rogério!
Estou convencido de que não é possível fazer o que preciso pelo simples fato
Tabela A
Numero contrato | Data Venda |
---|---|
0002 | 22/10/2014 |
0002 | 22/10/2014 |
0002 | 22/10/2014 |
Tabela B
Numero Contrato | Data Venda | Data Pagamento |
---|---|---|
0002 | 22/10/2014 | 24/10/2014 |
Se eu concatenar a tabela B com a A, vou popular as três linhas da tabela A com a data de pagamento 24/10/2014. O que não condiz com a realidade, pois efetuei somente um pagamento.
Por incrível que pareça, o usuário esta controlando isso via Excel. Tentei fazer um milagre aqui mas não foi possível.
Vocês que possuem mais experiência, concordam com a minha conclusão ou eu ainda não consegui entender a solução?
Luciano,
Eu tentei fazer o que você esta sugerindo, mas ao invés de Count utilizei o AutoNumber.
Mas mesmo assim, não consigo entender essa solução.
Veja o que postei em resposta a orientação do Rogério.
Estou me convencendo de que não é possível.
Você vai fazer o seguinte:
Ex:
TABELAO:
LOAD
CONTRATO,
DATAVENDA,
'V' AS TIPOREGISTRO,
count(CONTRATO & DATAVENDA) as qtdecompras
FROM TABELA1
Group by CONTRATO,
DATAVENDA,
TIPOREGISTRO;
CONCATENATE
LOAD
CONTRATO,
DATAVENDA,
DATAPAGAMENTO,
'P' AS TIPOREGISTRO,
count(CONTRATO & DATAPAGAMENTO) as qtdepagamentos
FROM TABELA2
Group by CONTRATO,
DATAVENDA,
DATAPAGAMENTO,
TIPOREGISTRO;