Jump to content

dev botao

Dificuldade em montar um SELECT


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

Recommended Posts

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???

Link to comment
Share on other sites

  • Moderadores

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

 

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.