Carlos Dornelas Postado 15 de Maio de 2008 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 Denunciar Compartilhar Postado 15 de Maio de 2008 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 Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Nelson Borges Postado 30 de Julho de 2008 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 Denunciar Compartilhar Postado 30 de Julho de 2008 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 Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Maffra Postado 30 de Julho de 2008 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 Denunciar Compartilhar Postado 30 de Julho de 2008 Carlos, Conseguiu resolver o problema? Att, Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
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.