Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde pessoal.
Tenho uma tabela
Codigo | Descricao | Valor |
---|---|---|
4. | Total_A | |
4.1 | Conta_1 | 50,00 |
4.2 | Conta_2 | 100,00 |
4.3 | Conta_5 | -35,00 |
5. | Total_B | |
5.1 | Conta_8 | 32,50 |
5.2 | Conta_11 | -5,00 |
5.3 | Conta_19 | 22,50 |
O que preciso fazer é verificar via EXPRESSÃO se o campo VALOR é nulo. Se ele for nulo, eu preciso somar o valores onde o código seja "parecido" com o código da linha que não tem valor. (Ou seja, tudo que começar com "4").
Eu tentei algo como:
= If(IsNull(Valor), Sum(Total If(Codigo like (Codigo & '*'), Valor)))
Até funciona, porém ele gera um Total Geral o qual vai aparecer tanto na linha 4. quanto na linha 5.
Alguma ideia ?
Abraços
Anderson Oberdan
Boa tarde.
Eu optaria em fazer no script. Dependendo da quantidade de registros pode ficar pesado na expressão....
Neste caso estou usando left para pegar, mas tem que ver no cadastro se tem quem é o "pai" e somaria nele. Fiz da forma abaixo para mostrar.
Segue um exemplo
Tabela:
LOAD * INLINE [
Conta,Descricao, Valor
4. ,Total_A ,
4.1 ,Conta_1 , 50
4.2 ,Conta_2 , 100
4.3 ,Conta_5 , -35
5. ,Total_B ,
5.1 ,Conta_8 , 32
5.2 ,Conta_11 , -5
5.3 ,Conta_19 , 22];
Left join (Tabela)
LOAD
*
Where len(Conta)=2 ;
LOAD
left(Conta,2) as Conta,
sum(Valor) as Valor_Total
Resident Tabela Group by left(Conta,2);
O resultado seria
4. | Total_A | 115 |
4.1 | Conta_1 | 50 |
4.2 | Conta_2 | 100 |
4.3 | Conta_5 | -35 |
5. | Total_B | 49 |
5.1 | Conta_8 | 32 |
5.2 | Conta_11 | -5 |
5.3 | Conta_19 | 22 |
Att,
Alessandro Furtado
Obrigado Alessandro pelo resposta. Porém uma dos meus problemas é que o codigo pode ser:
4.
4.1.
4. .
4.xyzabc
4.325.32
e qualquer valor deste pode ter "filhos". Então essa busca tem que ser dinâmica por isso pensei no "like"
Estou tentando evitar de fazer no script porque meu script já é uma "salada" organizada. Mas nesta carga já tenho Stored Procedure sendo montada dinamicamente dentro de For. Já tenho joins e concatenates.. enfim, não queria colocar mais um complicados no script senão daqui uns anos só Deus pra entender tanta coisa.. huahuahau..
Mas se não tiver saída via expressão, vou acabar usando sua solução mesmo! Valeu.
Anderson,
eu poderia e deveria ter usado o subfield no lugar do left.
se voce substituir o left por
subfield(Conta,'.',1). Sempre vai pegar a primeira posicao indepentende do Codigo.
Assim, voce pode totalizar no primeiro,segundo,... nivel.
AMF