Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia Senhores, estou modelando uma aplicação que tem com funcionalidade apresentar uma tabela onde uma das colunas é o valor de reajuste realizados no contratos, porém com isso surgiu uma dificuldade, são muitos contratos e o sistema cadastra esses reajustes em intervalos, por exemplo:
Rejuste - 1
Contrato Inicial - A
Contrato Final - J
Com isso não consegui imaginar uma maneira de relacionar a chave de contratos com a chave de reajustes, buscar no intervalo sabe ?
Alguém já fez algo parecido ?
Rodolfo, da uma pesquisada na função IntervalMatch, ele trabalha com o JOIN dentro de intervalos.
Exemplo de código do IntervalMatch
Grade: | ||||||
LOAD * INLINE [ | ||||||
Min, | Max, | Grade | ||||
0, | 34, | E | ||||
35, | 40, | D | ||||
40, | 60, | C | ||||
60, | 80, | B | ||||
80, | 100, | A | ||||
]; | ||||||
Notas: | ||||||
LOAD * INLINE [ | ||||||
Nota, | Aluno | |||||
30, | Yuri | |||||
50, | Edson | |||||
99, | Alan | |||||
10, | Geraldo | |||||
93, | Henrique | |||||
]; | ||||||
LEFT JOIN | ||||||
IntervalMatch(Nota) | ||||||
LOAD | ||||||
Min, //Primeiro o menor | ||||||
Max //depois o maior | ||||||
RESIDENT Grade; |
Rodolfo, da uma pesquisada na função IntervalMatch, ele trabalha com o JOIN dentro de intervalos.
Exemplo de código do IntervalMatch
Grade: | ||||||
LOAD * INLINE [ | ||||||
Min, | Max, | Grade | ||||
0, | 34, | E | ||||
35, | 40, | D | ||||
40, | 60, | C | ||||
60, | 80, | B | ||||
80, | 100, | A | ||||
]; | ||||||
Notas: | ||||||
LOAD * INLINE [ | ||||||
Nota, | Aluno | |||||
30, | Yuri | |||||
50, | Edson | |||||
99, | Alan | |||||
10, | Geraldo | |||||
93, | Henrique | |||||
]; | ||||||
LEFT JOIN | ||||||
IntervalMatch(Nota) | ||||||
LOAD | ||||||
Min, //Primeiro o menor | ||||||
Max //depois o maior | ||||||
RESIDENT Grade; |
Boa tarde Yuri, consegui chegar em um resultado muito próximo do que preciso:
O script com base no seu ficou assim:
Reajuste:
LOAD NRREAJUSTE,
NRCONTRATO_INI,
NRCONTRATO_FIM,
NRPERIODO_VENCTO_REAJUSTE,
NRPERIODO_VIGENCIA_REAJUSTE,
NRPERIODO_PROXIMO_REAJUSTE,
CDSITUACAO_REAJUSTE,
VLINDICE_MENSALIDADE,
VLINDICE_INSCRICAO
FROM
[...\REAJUSTE.qvd]
(qvd);
//O QVD Carregado abaixo trás uma relação entre o reajuste mais recente e o contrato referente a ele.
Contratos:
LOAD NRREAJUSTE,
NRCONTRATO
FROM
[...\\REAJUSTE_CONTRATO.qvd]
(qvd);
LEFT JOIN
IntervalMatch(NRCONTRATO)
LOAD
NRCONTRATO_INI, //Primeiro o menor - No meu caso contrato inicial
NRCONTRATO_FIM //depois o maior -No meu caso contrato final
RESIDENT Reajuste;
Porém parece que ele pula uma linha, ou deixa um relacionamento vazio para cada contrato
Rodolfo, a primeira tabela que você carregar coloca somente as colunas: NRREAJUSTE, NRCONTRATO_INI e NRCONTRATO_FIM. Dessa forma:
Reajuste:
LOAD
DISTINCT
NRREAJUSTE,
NRCONTRATO_INI,
NRCONTRATO_FIM
FROM
[\\10.0.8.35\PLanner\Aplicações\QVD\Transformação\Analise Comercial\REAJUSTE.qvd]
(qvd);