Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
mercadante
Creator
Creator

Diferenciar Contrato Novo de Contrato Alterado

Srs.

Boa tarde!

Criei um qvd que armazena uma foto diária através da validação de uma chave na clausula Where.

Porem agora tenho contratos duplicados, então me deparei com a necessidade de distinguir contratos novos dos contratos alterados.

Pensei em fazer da seguinte forma.

Carrego um qvd original.

Apos esta carga concateno um novo select onde o numero do contato not existis. Desta forma ele concatena os contratos que não existirem.

Agora concateno novamente onde as datas not existis. Desta forma ele concatena os contratos que tiveram alteração de datas.

Abaixo segue um exemplo do código que criei.

Porem onde esta o problema

Quanto tenho um contrato que foi alterado ele grava o mesmo duas vezes como novo e duas vezes como Contrato Novo e duas vezes como Contrato Alterado.

Alguem pode me ajudar ?

//-----------------------------

[Base]:

load

     [tipo da carga]

     chave_inclusao

     chave_alteracao

     numero do contrato

     data1

     data2

     data3

     nome do cliente

     endereço

from

     [base.qvd]

(qvd);

//-----------------------------

concatenate (Base)

     'Contrato Novo' as [tipo da carga]

     chave_inclusao

     chave_alteracao

     numero do contrato

     data1

     data2

     data3

where

     not existis ('chave_inclusao',numero do contrato);

sql

select

     numero do contrato as chave_inclusao

     data1 ||'|'|| data2 ||'|'|| data3 as chave_alteracao

      numero do contrato

     data1

     data2

     data3

     nome do cliente

     endereço

from

     <Tabela>;

//-----------------------------

concatenate (Base)

     'Contrato Alterado' as [tipo da carga]

     chave_inclusao

     chave_alteracao

     numero do contrato

     data1

     data2

     data3

where

     not existis ('chave_alteracao',data1 &'|'& data2 &'|'& data3);

sql

select

     numero do contrato as chave_inclusao

     data1 ||'|'|| data2 ||'|'|| data3 as chave_alteracao

      numero do contrato

     data1

     data2

     data3

     nome do cliente

     endereço

from

     <Tabela>;

1 Solution

Accepted Solutions
mercadante
Creator
Creator
Author

Caros,

Obrigado pela ajuda de todos,

Mas a necessidade foi descontinuada.

Atte.

Mercadante

View solution in original post

9 Replies
nicolett_yuri

Não seria mais interessante gravar a data hora da foto tirada?

mercadante
Creator
Creator
Author

Eu gravo ela também,  mas não na chave

nicolett_yuri

Quando o contrato é alterado, você deseja manter somente a última "versão" dele?

mercadante
Creator
Creator
Author

Não, eu quero manter todas as alterações.

Por exemplo, tenho um campo que a data do cancelamento por inadimplência. Essa data pode ser preenchida varias vezes.

Então vou ter todo o histórico deste contrato.

Neste modelo de código que postei, ele funciona mas duplica quando o contrato tem alteração.

Vou dar um exemplo

contrato 0001 foi cadastrado dia 01/01/2015 e a data de cancelamento = null().

Na carga ele vai mostrar uma vez esse contrato com o tipo carga = Contrato Novo

Se o campo data de cancelamento for alterado " Neste caso ele entraria no segundo concatenate do código" ele fica assim

contrato 0001  cadastro 01/01/2015 Data de Cancelamento Null() tipo carga = contrato novo

contrato 0001  cadastro 01/01/2015 Data de Cancelamento Null() tipo carga = contrato novo

contrato 0001  cadastro 01/01/2015 Data de Cancelamento 24/01/2015 tipo carga = contrato alterado

contrato 0001  cadastro 01/01/2015 Data de Cancelamento 24/01/2015 tipo carga = contrato alterado


Sendo que deveria ser somente duas linhas.


contrato 0001  cadastro 01/01/2015 Data de Cancelamento Null() tipo carga = contrato novo

contrato 0001  cadastro 01/01/2015 Data de Cancelamento 24/01/2015 tipo carga = contrato alterado


nicolett_yuri

Então acredito que você deva apenas ficar acumulando as linhas.

Como você sabe se o contrato teve alteração?

mercadante
Creator
Creator
Author

Pelo campo [tipo carga]

nicolett_yuri

Eu acho que você pode manter todo o histórico e depois ir removendo as linhas e deixando somente o status que desejar.

O problema disso é o seguinte, quais são os campos que você verifica se teve alteração no contrato? somente o data de cancelamento?

Clever_Anjos
Employee
Employee

Já conseguiu a resposta? Se sim, escolha uma e marque como "Correta" para fechar o tópico e nos ajudar a manter a comunidade organizada

mercadante
Creator
Creator
Author

Caros,

Obrigado pela ajuda de todos,

Mas a necessidade foi descontinuada.

Atte.

Mercadante