Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde pessoal,
Estou precisando de uma ajuda...
Tenho uma situação de cadastro de contratos com os campos id, dataRef, codBanco e sequencia.
Cada sequencia representa um contrato, codBanco é o banco que gerou o contrato e dataRef é o mês/ano de análise e id é o cliente.
Preciso colocar um contador 1 quando o contrato for novo, ou seja, quando não existir aquela linha no mês anterior.
id | DataRef | Banco | sequencia |
14532 | out/11 | 32218 | 1 |
14532 | out/11 | 32218 | 2 |
14532 | nov/11 | 32218 | 1 |
14532 | nov/11 | 32218 | 2 |
14532 | nov/11 | 32218 | 3 |
14532 14532 14532 | nov/11 Dez/11 Dez/11 | 35274 32218 32218 | 1 1 2 |
No exemplo colocado, no mês outubro existem 2 contratos pro cliente no mesmo banco (sequencia 1 e 2), no mês novembro existem 4 contratos pro mesmo cliente, sendo o de sequencia 1 e 2 os mesmo do mês anterior (mesmo banco) e o sequencia 3 novo contrato para o mesmo banco e outro contrato novo (sequencia 1) para outro banco.
Nesse caso, os contratos novos devem receber um contador 1 numa coluna depois da sequencia, e assim ir verificando quando for contrato novo.
Se alguem puder me ajudar ou dar uma clareada nas ideias, agradeço!
Ola Adriana,
Da uma olhada no arquivo em anexo, acho que atende sua necessidade.
Abracos,
Cesar
Cara faz um if no script ,
If (sequencia = 3 , 1 ) as novocontrato,
Não dá, nem sempre será o 3... No exemplo é a sequencia 3 de um banco e sequencia 1 de outro... Preciso verificar se a linha já existia no mÊs anterior.
Boa tarde.
Criei um QVW exemplo levando em consideração o que entendi sobre o problema.
Verifique se este arquivo atende a sua necessidade.
Abraço!
Segue o código:
LET Incremento = 1;
Auxiliar:
LOAD id,
DataRef,
Banco,
AutoNumber(id&'|'&DataRef&'|'&Banco,'CHAVE') as [Chave]
FROM
(ooxml, embedded labels, table is Plan1);
Final:
LOAD
*,
If(RecNo() = 1 and not IsNull([Chave]), // Aqui você verificará se contém dado no primeiro registro [Chave]
[Chave],
If(Peek([Chave],-1) = [Chave],
Peek(Sequência,-1)+$(Incremento)
,1
)
) as Sequência
Resident Auxiliar;DROP Field [Chave]
From Final;DROP Table Auxiliar;
Raphael,
testei sua solução. Na verdade, a sequencia eu já tenho... Cada numero de sequencia representa um contrato pra um banco. Podem existir sequencias de números iguais, pra mesma pessoa, porém elas serão de bancos diferentes (igual coloquei no exemplo). Eu preciso verificar se a sequencia, daquele banco já existia no mÊs anterior, se ela não existia, é um contrato novo.
Desculpe Adriana, mas não entendi a sua necessidade. Pois pelo que entendi, a sequência vem da combinação dos campos Id, Data e Banco ok? Sendo assim, o mesmo contrato pode repetir por vários meses e se for assim a sua necessidade em ver apenas o mês anterior não iá funcionar ao menos que ele se repita em todos os meses.
Ola Adriana,
Da uma olhada no arquivo em anexo, acho que atende sua necessidade.
Abracos,
Cesar
Pelo o que entendi, ela quer que o script percorra os contratos e bancos através dos meses e identifique como novo a última ocorrência.
Ou seja, as linhas selecionadas deveriam conter valor 1, pois a primeira tem o id = 14532 + Chave_Contrato = 35274, o que seria a única ocorrência em todos os meses. e a última seria a combinação id = 14532 + Chave_Contrato = 32218, que vem apresentando ocorrência nos meses, mas será tratado como novo contrato em sua última ocorrência.
Acredito que seja isso, mas somente a adriana poderá dizer ao certo.
Ola Raphael,
Faz sentido, porem eu entendi que id seria o identificador do cliente e se ela quer saber os novos contratos de determinado cliente em um determinado banco a chave seria id, banco e sequencia. Por novos contratos entende-se id+banco+sequencia inexistentes nos meses anteriores, ou seja, o cliente 14532 teve um contrato novo (sequencia 1) para o banco 35274. Ja na ultima linha destacada nao seria um contrato novo porque o contrato de sequencia 2 ja existe para o banco 32218, cliente 14532 em meses anteriores. Mas como voce bem disse Raphael, so a Adriana pode confirmar isso.
Abracos,
Cesar