Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, tenho aqui a tabela CODDOCTO.
Nessa tabela tenho o campo CODDOCTOCRCSUBST, e o campo CODDOCTOCRC.
CODDOCTOCRCSUBST | CODDOCTOCRC | CODCLI |
---|---|---|
22610 | 729 | |
22610 | 22099 | 729 |
33000 | 120 | |
42889 | 378 |
Tenho outra tabela que guarda os valores do documento que é a CRCITDOC, com o campo CODDOCTOCRC que é o campo chave.
VALORITEMDOC | CODDOCTOCRC |
---|---|
283,34 | 22099 |
283,34 | 22610 |
100,00 | 33000 |
95,00 | 42889 |
Conforme a tabela acima o a campo CODDOCTOCRCSUBST só tem dado quando ele substitui um documento da CODDOCTOCRC. No meu select ele está considerando tudo da tabela CODDOCTOCRC, porém preciso de apenas uma vez o valor desse campo já que o documento foi substituido.
O documento 22610 foi substituído pelo 22099, então seu valor é 283,34 e não esse mesmo valor 2x 283,34.
Os outros documentos 3300 e 42889 não tiveram substiuição, levarei o valor deles também.
Como faço para levar corretamente na minha transformação?
Qualquer duvida eu posso tentar ser mais claro.
Obrigado.
Diego, se esse registro que foi substituído não é mais importante ao seu modelo, sugiro remove-lo e deixar somente o atual.
Exemplo de código:
Documentos_Substituidos:
LOAD
DISTINCT
CODDOCTOCRCSUBST as CODDOCTOCRC
FROM CODDOCTO
WHERE LEN(TRIM(CODDOCTOCRCSUBST ))>0;
Tabela:
LOAD
IF(LEN(TRIM(CODDOCTOCRCSUBST))>0, CODDOCTOCRCSUBST, CODDOCTOCRC) as CODDOCTOCRC,
CODCLI
FROM CODDOCTO
WHERE
NOT Exists(CODDOCTOCRC);
DROP TABLE Documentos_Substituidos;
Yuri, eu estava querendo fazer com IF, estava a manhã toda na labuta aqui.
Do jeito que você falou sobre descartar os que foram substituidos não é uma má ideia, já que quero tratar a inadimplência. Em um segundo momento eu amarro o campo CODDOCTOCRC a tabela onde tem as notas sem problemas.
Meu Script está assim na transformação.
LOAD
CODIGOEMPRESA,
CODCLI,
CODDOCTOCRCSUBST,
CODDOCTOCRC,
NRODOCTOCRC,
EMISSAOCRC,
DESCONTOCRC,
ACRESCIMOCRC,
VENCIMENTOCRC,
QUITADODOCTOCRC,
STATUSDOCTOCRC
FROM [lib://Caminho Qvds Inadimplência (np_administrador)/CRCDOCTO.QVD](qvd)
WHERE STATUSDOCTOCRC <> 'C' ;
Left join (CRCDOCTO)
LOAD
CODDOCTOCRC,
VALORITEMDOC
FROM [lib://Caminho Qvds Inadimplência (np_administrador)/CRCITDOC.QVD](qvd);
Seção Drop:
STORE CRCDOCTO into [lib://Qvds Transf Inadim (np_administrador)/CRCDOCTO .QVD];
Drop table CRCDOCTO ;
Então utilize a lógica que te passei que vai te atender
Tentei da primeira maneira que me falou, mas ele enxugou tudo, até outros dados vitais.
Então tentei assim:
LOAD
IF(LEN(TRIM(CODDOCTOCRCSUBST))>0, CODDOCTOCRCSUBST, CODDOCTOCRC) as CODDOCTOCRC,
CODIGOEMPRESA,
CODCLI,
NRODOCTOCRC,
EMISSAOCRC,
DESCONTOCRC,
ACRESCIMOCRC,
VENCIMENTOCRC,
QUITADODOCTOCRC,
STATUSDOCTOCRC
FROM [lib://Caminho Qvds Inadimplência (np_administrador)/CRCDOCTO.QVD](qvd)
WHERE NOT Exists(CODDOCTOCRC)
and STATUSDOCTOCRC <> 'C';
Left join (CRCDOCTO)
LOAD
CODDOCTOCRC,
VALORITEMDOC
FROM [lib://Caminho Qvds Inadimplência (np_administrador)/CRCITDOC.QVD](qvd);
Porém ainda não cheguei no resultado preciso, ele está trazendo do mesmo jeito os dois documentos, tanto o original quanto o substituído.
Um exemplo de como está no meu banco. Para facilitar.
Veja que o VERDE é o documento original e o amarelo é o documento de substituição. O problema é que ele cria o documento de substituição nos dois campos.