Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá a todos,
estou com uma dificuldade e gostaria de ver se alguém aqui poderia me ajudar... eu preciso de que quando não houver um [valor], busque o 'valor da formula' que aparece na imagem acima... @1 + @2 = ( valor do cod =1 + valor do cod =2) (somente dos códigos da mesma agencia)...
Eu tentei modificar aquele campo fórmula... para que ficasse entre aspas e com uma vírgula de separador... e tentei usa isso em um set analisys (conforme mostra o print) , só que não deu muito certo... os valores só batem se eu selecionar apenas um código e uma agência...
me deram a dica de tentar modificar isso no script e só depois relacionar a conta com o valor ( ja arumado )... porém não sei como chegaria nesse valor pelo script...
se alguém tiver alguma dica ...
Bom dia,
Uma sugestão é trabalhar no script.
Para cada registro que possuir valor no campo formula deve ser criada uma nova linha para cada campo citado na fórmula, por exemplo:
tabela_inicial:
conta | agencia | cod | formula | valor |
111111 | 1 | 1 | - | 20 |
222222 | 1 | 2 | - | 50 |
333333 | 1 | 3 | @1+@2 | 0 |
Após tratamento:
conta | agencia | cod | formula | valor |
111111 | 1 | 1 | - | 20 |
222222 | 1 | 2 | - | 50 |
333333 | 1 | 3 | - | 20 |
333333 | 1 | 3 | - | 50 |
Não tenho a solução completa mas é um bom começo.
Para facilitar a agregação e soma dos valores (pois a fórmula possui apenas o campo codigo e este deve respeitar sempre a agencia do mesmo registro) crie um novo campo concatenando agencia e o codigo: agencia & '#' & cod AS agencia_cod, ficará algo parecido com: 1#1 1#2 1#3...
Separe da tabela já existentes os registros que possuem formula dos que não possuem:
tmp_sem_formula:
LOAD ...
FROM ...
WHERE ISNULL(formula) = -1;
tmp_com_formula:
LOAD ...
FROM ...
WHERE ISNULL(formula) = 0;
O tratamento deve ser realizado apenas na tabela "tmp_com_formula".
Agora é necessário verificar em quantas linhas o registro será quebrado, para isso utilize a função:
SubStringCount(formula, '@') + 1 AS contador
A partir desta parte deverá ser utlizado laços de repetições para percorrer a tabela e desmembrar 1 registro em "n" registros.
Quando criar esta tabela, você deverá utilizar um join para relacionar este novo registro com os valores da tabela "tmp_sem_formula".
Espero ter ajudado, abraços!
Bom dia,
Uma sugestão é trabalhar no script.
Para cada registro que possuir valor no campo formula deve ser criada uma nova linha para cada campo citado na fórmula, por exemplo:
tabela_inicial:
conta | agencia | cod | formula | valor |
111111 | 1 | 1 | - | 20 |
222222 | 1 | 2 | - | 50 |
333333 | 1 | 3 | @1+@2 | 0 |
Após tratamento:
conta | agencia | cod | formula | valor |
111111 | 1 | 1 | - | 20 |
222222 | 1 | 2 | - | 50 |
333333 | 1 | 3 | - | 20 |
333333 | 1 | 3 | - | 50 |
Não tenho a solução completa mas é um bom começo.
Para facilitar a agregação e soma dos valores (pois a fórmula possui apenas o campo codigo e este deve respeitar sempre a agencia do mesmo registro) crie um novo campo concatenando agencia e o codigo: agencia & '#' & cod AS agencia_cod, ficará algo parecido com: 1#1 1#2 1#3...
Separe da tabela já existentes os registros que possuem formula dos que não possuem:
tmp_sem_formula:
LOAD ...
FROM ...
WHERE ISNULL(formula) = -1;
tmp_com_formula:
LOAD ...
FROM ...
WHERE ISNULL(formula) = 0;
O tratamento deve ser realizado apenas na tabela "tmp_com_formula".
Agora é necessário verificar em quantas linhas o registro será quebrado, para isso utilize a função:
SubStringCount(formula, '@') + 1 AS contador
A partir desta parte deverá ser utlizado laços de repetições para percorrer a tabela e desmembrar 1 registro em "n" registros.
Quando criar esta tabela, você deverá utilizar um join para relacionar este novo registro com os valores da tabela "tmp_sem_formula".
Espero ter ajudado, abraços!
Olá,
Obrigado pela dica,
aqui deu certo apenas com
subfield(formula_x,',') as codmaster
valeu ai pela ajuda!
abraços...