Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Somar chaves parecidas

Boa tarde pessoal.

Tenho uma tabela

CodigoDescricaoValor
4.Total_A
4.1Conta_150,00
4.2Conta_2100,00
4.3Conta_5-35,00
5.Total_B
5.1Conta_832,50
5.2Conta_11-5,00
5.3Conta_1922,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

3 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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_A115
4.1Conta_150
4.2Conta_2100
4.3Conta_5-35
5.Total_B49
5.1Conta_832
5.2Conta_11-5
5.3Conta_1922

Att,

Alessandro Furtado

furtado@farolbi.com.br
Not applicable
Author

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.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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

furtado@farolbi.com.br