Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

Cubo Analise de Vendas


Carlos Dornelas

Posts Recomendados


  • Tópicos Que Criei:  8
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  13
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  145
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  47

Estou desenvolvendo um cubo que pega os totais das vendas, deduz do total das devolucoes e da a margem de lucro. So que quando eu visualizo o lucro ele vem de acordom com a quantidade de tipos de movimentos que ele foi movimentado. Por exemplo: se um item teve margem de lucro de 70% e teve movimento nos tipos 1.2.05 e 2.1.01 ele me traz 140%. Se ele foi movimentado em um so tipo de movimento traz 70% e se foi movimentado nos tres traz 210%. Se alguem puder me ajudar. A sentenca que utilizo é essa:

SELECT CODTMV, TMOV.CODFILIAL, TPRDLOC.SALDOFISICO2 AS SALDO, TMOV.CODCOLIGADA, TPRD.CODIGOREDUZIDO, TPRD.NOMEFANTASIA,

CASE WHEN CODTMV IN ('2.1.01','2.1.06') THEN SUM (TITMMOV.QUANTIDADE) ELSE 0 END AS 'QTO VENDIDA',

CASE WHEN CODTMV IN ('2.1.01','2.1.06') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100) ELSE 0 END AS 'VALOR VENDIDO',

CASE WHEN CODTMV IN ('1.2.05') THEN SUM (TITMMOV.QUANTIDADE)*-1 ELSE 0 END AS 'QTO DEVOLVIDA',

CASE WHEN CODTMV IN ('1.2.05') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100)*-1 ELSE 0 END AS 'VALOR DEVOLVIDO',

SUM (TITMMOV.QUANTIDADE * TPRD.PRECO3) AS 'VALOR DE CUSTO',

TPRD.PRECO3 AS 'CUSTO PRODUTO', TPRD.IDPRD,

CASE WHEN CODTMV IN ('2.1.01','2.1.06') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100) ELSE 0 END - CASE WHEN CODTMV IN ('1.2.05') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100) ELSE 0 END AS 'MARGEM BRUTA',

((((ROUND(((CASE WHEN CODTMV IN ('2.1.01','2.1.06') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100) ELSE 0 END - CASE WHEN CODTMV IN ('1.2.05') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100) ELSE 0 END)),2)*100))/ROUND((SUM (TITMMOV.QUANTIDADE * TPRD.PRECO3)),2))) AS LUCRO

FROM TITMMOV (NOLOCK), TMOV (NOLOCK), TPRD (NOLOCK), TPRDLOC

WHERE

TITMMOV.IDMOV = TMOV.IDMOV AND

TITMMOV.CODCOLIGADA=TMOV.CODCOLIGADA AND

TPRD.IDPRD=TPRDLOC.IDPRD AND

TPRD.CODCOLIGADA=TPRDLOC.CODCOLIGADA AND

TITMMOV.CODCOLIGADA=TPRD.CODCOLIGADA AND

TITMMOV.IDPRD = TPRD.IDPRD AND

TMOV.STATUS <> 'C' AND

TMOV.CODCOLIGADA=TITMMOV.CODCOLIGADA AND

TMOV.DATAEMISSAO >=:DATA1_D AND

TMOV.DATAEMISSAO <=:DATA2_D AND

TMOV.CODTMV IN ('2.1.01','2.1.06','1.2.05')

GROUP BY TPRD.CODIGOREDUZIDO, NOMEFANTASIA, PRECO3, TPRD.IDPRD, TMOV.CODCOLIGADA, TPRDLOC.SALDOFISICO2, TMOV.CODTMV, TMOV.CODFILIAL

Em area de consulta tenho

CODCOLIGADA

CODFILIAL

CODTMV

Em Linhas de Consulta tenho

CODIGOREDUZIDO

NOMEFANTASIA

CUSTOPRODUTO

SALDO

Em Campos da Base tenho

QTO VENDIDA

VALOR VENDIDO

VALOR DE CUSTO

QTO DEVOLVIDA

VALOR DEVOLVIDO

MARGEM BRUTA

LUCRO

Link para comentar
Compartilhar em outros sites

  • 2 meses depois...

  • Tópicos Que Criei:  2
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  69
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  365
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  38

Olá...

Tente usar distinct na clausula SELECT .

Exemplo clausula

SELECT DISTINCT CODTMV, TMOV.CODFILIAL, TPRDLOC.SALDOFISICO2 AS SALDO, TMOV.CODCOLIGADA, TPRD.CODIGOREDUZIDO, TPRD.NOMEFANTASIA,

CASE WHEN CODTMV IN ('2.1.01','2.1.06') THEN SUM (TITMMOV.QUANTIDADE) ELSE 0 END AS 'QTO VENDIDA',

CASE WHEN CODTMV IN ('2.1.01','2.1.06') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100) ELSE 0 END AS 'VALOR VENDIDO',

CASE WHEN CODTMV IN ('1.2.05') THEN SUM (TITMMOV.QUANTIDADE)*-1 ELSE 0 END AS 'QTO DEVOLVIDA',

CASE WHEN CODTMV IN ('1.2.05') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100)*-1 ELSE 0 END AS 'VALOR DEVOLVIDO',

SUM (TITMMOV.QUANTIDADE * TPRD.PRECO3) AS 'VALOR DE CUSTO',

TPRD.PRECO3 AS 'CUSTO PRODUTO', TPRD.IDPRD,

CASE WHEN CODTMV IN ('2.1.01','2.1.06') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100) ELSE 0 END - CASE WHEN CODTMV IN ('1.2.05') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100) ELSE 0 END AS 'MARGEM BRUTA',

((((ROUND(((CASE WHEN CODTMV IN ('2.1.01','2.1.06') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100) ELSE 0 END - CASE WHEN CODTMV IN ('1.2.05') THEN SUM (TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO + ((TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO*((-100+(TMOV.VALORBRUTO*100)/TMOV.VALORBRUTOINTERNO))))/100) ELSE 0 END)),2)*100))/ROUND((SUM (TITMMOV.QUANTIDADE * TPRD.PRECO3)),2))) AS LUCRO

FROM TITMMOV (NOLOCK), TMOV (NOLOCK), TPRD (NOLOCK), TPRDLOC

WHERE

TITMMOV.IDMOV = TMOV.IDMOV AND

TITMMOV.CODCOLIGADA=TMOV.CODCOLIGADA AND

TPRD.IDPRD=TPRDLOC.IDPRD AND

TPRD.CODCOLIGADA=TPRDLOC.CODCOLIGADA AND

TITMMOV.CODCOLIGADA=TPRD.CODCOLIGADA AND

TITMMOV.IDPRD = TPRD.IDPRD AND

TMOV.STATUS <> 'C' AND

TMOV.CODCOLIGADA=TITMMOV.CODCOLIGADA AND

TMOV.DATAEMISSAO >=:DATA1_D AND

TMOV.DATAEMISSAO <=:DATA2_D AND

TMOV.CODTMV IN ('2.1.01','2.1.06','1.2.05')

GROUP BY TPRD.CODIGOREDUZIDO, NOMEFANTASIA, PRECO3, TPRD.IDPRD, TMOV.CODCOLIGADA, TPRDLOC.SALDOFISICO2, TMOV.CODTMV, TMOV.CODFILIAL

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  15
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  548
  • Conteúdo/Dia:  0.09
  • Reputação:   1
  • Pontos/Conquistas:  2.891
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  44

Carlos,

Conseguiu resolver o problema?

Att,

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.