Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

SUBTOTAL ERRADO COM SUM(DISTINCT)

Boa tarde pessoal.

Estou com uma dificuldade para obter o subtotal correto de uma expressão. Nela faço a soma simples de um campo (SUM(DISTINCT(QTDE_VOLS)) e encontro a quantidade correta por nota fiscal. Porém como estou usando DISTINCT, o subtotal soma somente as quantidades distintas. Ou seja, se uma quantidade se repete, ela está sendo somada somente uma vez no total final.

Exemplo: quantidades, 3, 5, 2, 13, 9 e 5. O total destas quantidades é 37, mas como o 5 se repete, ele é somado apenas uma vez, resultando num total de 32.

Existe alguma maneira deste subtotal ficar correto, mesmo com o uso do distinct que é uma necessidade neste caso?

Desde já agradeço a todos.

Atenciosamente,

Edson Marques.

1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

Bom dia a todos.

Primeiramente agradeço a todos que postaram sugestões. Quanto a solução do caso, acabei optando por remodelar o script e evitar o uso do DISTINCT conforme sugestão do Yuri e que de fato acabou resolvendo o problema.

Muito obrigado.

Edson Marques.

View solution in original post

11 Replies
lucianosv
Specialist
Specialist

Boa tarde.

Nesse caso, você pode usar o dimensionality ( ).

Você irá calcular mais ou menos assim:

If(dimensionality ( ) = 1, SUM(DISTINCT(QTDE_VOLS)), SUM(QTDE_VOLS)

Antes de alterar, crie uma expressão no gráfico com valor o dimensionality ( )

Lá você verá qual o número para as linhas detalhe e para a linha de total.

Independente disso, vai ficar estranho a soma do total ser diferente da soma das linhas.

nicolett_yuri

Edson, muito cuidado com o DISTINCT hein, talvez você tenha que melhorar sua modelagem para não que não seja mais necessária a utilização do DISTINCT em sua conta.

Reveja o seu modelo.

Anonymous
Not applicable
Author

Realmente Yuri. Percebi o erro nos totais somente após um detalhe que me chamou a atenção. Caso contrário teria passado batido e iria notar somente quando houvesse um problema maior. Vou tentar a opção que o Luciano indicou e caso não resolva vou rever a modelagem.

Obrigado.

Anonymous
Not applicable
Author

Boa tarde Luciano, vou tentar aqui e posteriormente posto o resultado.

Muito obrigado.

lucianosv
Specialist
Specialist

Ok, ficamos no aguardo.

Mas pensando no comentário do Yuri, refaço o questionamento:Não é estranho a soma do total ser diferente da soma das linhas detalhe?

Isso é estranho tanto no seu gráfico/análise, quanto na nuvem de dados. Provavelmente você está exponenciando as linhas com algum join incorreto.

Seria bom revalidar os números e a nuvem de dados.

nicolett_yuri

Luciano, não é estranho devido ao DISTINCT.

A tabela dinâmica refaz o cálculo no total sem a dimensão, desta forma se existirem valores iguais de notas ele vai considerar somente 1 destes valores e isso faz com que o total seja menor que o número verdadeiro.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Boa tarde.

Concordo com o Yuri.  Rever a modelagem para evitar isto seria bom, mas nem sempre possível (tempo x entrega).

Mas, se for para colocar uma expressão de uma forma que de o numero esperado, eu sugiro usar o aggr

sum( aggr ( sum(distinct QTDE_VOLS), CAMPO_CHAVE_NOTA ))

Mas lembrar que a performance vai ser prejudicada em virtude de ser criado uma tabela virtual para fazer o calculo da expressão do aggr....

Na realidade se conseguir fazer os cálculos sem o aggr, ganha-se performance, mas ai precisa ver como esta a sua modelagem.

Att,

Alessandro Furtado

furtado@farolbi.com.br
lucianosv
Specialist
Specialist

Você não entendeu a minha estranheza.

Acho estranho ele querer um totalizador diferente da soma das linhas que ele mostra.

No mínimo para amenizar deveria ter pelo menos um count para caso alguém questione, se multiplique o valor pelo count e o total bata.

Para mim é um sinal que têm algo errado coma a informação ou com a nuvem de dados.

nicolett_yuri

Com certeza Luciano, para ter que usar um SUM DISTINCT é certeza de ter problema no modelo ou na lógica utilizada.