Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2321 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Opa!

E o seguinte, montei um select e ele está funcionado perfeitamente, porém o cliente pediu para que eu adicionasse uma coluna no mesmo, e não estou conseguindo!

Este e o select


SELECT SEC_CODIGO,
SEC_NOME,COUNT(*),
SUM((ME2_VLRUNIT-ME2_DESCONTO)*ME2_QUATIDADE) AS TOTAL FROM MVESTOQUE2
INNER JOIN MVESTOQUE1 ON (ME1_DOCTO=ME2_DOCTO AND ME2_OPERACAO=ME1_OPERACAO)
INNER JOIN PRODUTO ON (PRO_CODIGO=ME2_PRODUTO)
INNER JOIN SECCAO ON (SEC_CODIGO=PRO_SECCAO)
INNER JOIN FABRICANTE ON (FAB_CODIGO=PRO_FABRICANTE)
INNER JOIN FUNCIONARIO ON (FUN_CODIGO=ME1_VENDEDOR)
WHERE ME1_OPERACAO='5'
AND ME2_DATA BETWEEN :D_INI AND :D_FIM
GROUP BY SEC_CODIGO,SEC_NOME
ORDER BY TOTAL DESC

 

Ele retorna perfeitamente o que foi pedido primeiro

image.png.7d8abebf0e7766ce94c7bb7acbe84f41.png
Se observarem ele retorna o CODIGO DA SECCAO, O NOME DA SECCAO, A QUANTIDADE DE VENDAS POR SECCAO E O VALOR VENDIDO DE CADA SECCAO
O Cliente solicitou que tenha o valor em porcentagem de quanto que cada seccao representou no total de tudo somado!

E não estou conseguindo fazer isso no SELECT, alguém pode me dar uma luz???

  • Moderadores
Postado

Dentro do mesmo select não sei se será possível porque vc teria que ter um select para pegar a totalização primeiro:

SELECT 
SUM((ME2_VLRUNIT-ME2_DESCONTO)*ME2_QUATIDADE) AS TOTAL_GERAL FROM MVESTOQUE2
INNER JOIN MVESTOQUE1 ON (ME1_DOCTO=ME2_DOCTO AND ME2_OPERACAO=ME1_OPERACAO)
INNER JOIN PRODUTO ON (PRO_CODIGO=ME2_PRODUTO)
INNER JOIN SECCAO ON (SEC_CODIGO=PRO_SECCAO)
INNER JOIN FABRICANTE ON (FAB_CODIGO=PRO_FABRICANTE)
INNER JOIN FUNCIONARIO ON (FUN_CODIGO=ME1_VENDEDOR)
WHERE ME1_OPERACAO='5'
AND ME2_DATA BETWEEN :D_INI AND :D_FIM

para depois pegar a participação em percentual de cada produto de acordo com esse total geral.

Se for via banco de dados eu faria uma Store Procedure contendo os 2 selects.

Se for via programação é fazer o select geral primeiro e colocar dentro do segundo select o campo percentual calculado sobre esse valor_geral que seria um parâmetro informado.

 

SELECT SEC_CODIGO,
SEC_NOME,COUNT(*),
SUM((ME2_VLRUNIT-ME2_DESCONTO)*ME2_QUATIDADE) AS TOTAL FROM MVESTOQUE2

(SUM((ME2_VLRUNIT-ME2_DESCONTO)*ME2_QUATIDADE)*100/:Vlr_Geral) AS percentual

INNER JOIN MVESTOQUE1 ON (ME1_DOCTO=ME2_DOCTO AND ME2_OPERACAO=ME1_OPERACAO)
INNER JOIN PRODUTO ON (PRO_CODIGO=ME2_PRODUTO)
INNER JOIN SECCAO ON (SEC_CODIGO=PRO_SECCAO)
INNER JOIN FABRICANTE ON (FAB_CODIGO=PRO_FABRICANTE)
INNER JOIN FUNCIONARIO ON (FUN_CODIGO=ME1_VENDEDOR)
WHERE ME1_OPERACAO='5'
AND ME2_DATA BETWEEN :D_INI AND :D_FIM
GROUP BY SEC_CODIGO,SEC_NOME
ORDER BY TOTAL DESC

 

  • Este tópico foi criado há 2321 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.