Array
(
)

duvidas em comandos sql

Leandro Santana
   - 31 out 2012

pessoal estou com duvidas em um trabalho q eu tenho q fazer,se alguem puder me ajudar eu agradeceria.são duas tabelas
Totalize por produto a quantidade de produtos vendidos, quantidade de pedidos e qual o valor total vendido.

Claudiadnh
   - 31 out 2012

Seria mais ou menos isso:

#Código

SELECT *
  FROM clientes
 WHERE (((tipo_pessoa = 'J') AND (RO = 'SP'))
     OR ((tipo_pessoa <> 'J') AND (RO <> 'SP')))


Se você não entender pode postar a estrutura da tabela, que aí fica mais fácil ajudar.

Alex Lekao
   - 06 nov 2012

Ola Leandro, boa tarde!!!

Eu utilizo alguns selects aqui que acredito que tenha o que vc quer, para mim esta meio vago a sua solicitacao, como a Claudio mencionou se quiser postar a estrutura da tabela pode ficar mais facil.

O select eh bem grande e bastante pesado, entao nao sei se ficara bom, aqui foi feito por uma necessidade muito especifica entao optamos por correr o risco na perca de desempenho.

Vou postar o codigo abaixo, qqr coisa da um toque, neste codigo uso muita coisa, bem mais ate do que vc precisa, mas acho que tem oque vc precisa.

Segue o codigo:

SELECT
LOJA,
Marca,
CODIGO,
CODFAB,
NOME,
SUM(ESTOQUE)Estoque,
SUM(ISNULL(QTDPCCMP,0)) AS QTDPCCMP,
SUM(ISNULL(QTDPCVDA,0)) AS QTDPCVDA,
SUM(ISNULL(CUSTOVDA,0)) AS CUSTOVDA,
SUM(ISNULL(TOTVDA,0)) AS TOTVDA,

SUM(ISNULL(TOTVDA,0))-SUM(ISNULL(CUSTOVDA,0)) AS MARGEM,

CASE WHEN ((ISNULL(NULLIF(SUM(ISNULL(TOTVDA,0)),0)/NULLIF(SUM(ISNULL(CUSTOVDA,0)),0),0))-1)*100 = -100 THEN 0
ELSE ((ISNULL(NULLIF(SUM(ISNULL(TOTVDA,0)),0)/NULLIF(SUM(ISNULL(CUSTOVDA,0)),0),0))-1)*100
END AS MKP,

SUM(ISNULL(QTDPCDEV,0)) AS QTDPCDEV,
SUM(ISNULL(CUSTODEV,0)) AS CUSTODEV,
SUM(ISNULL(TOTDEV,0)) AS TOTDEV,

SUM(ISNULL(QTDPCVDA,0))-SUM(ISNULL(QTDPCDEV,0)) AS QTDPCVDALIQ,
SUM(ISNULL(CUSTOVDA,0))-SUM(ISNULL(CUSTODEV,0)) AS CUSTOLIQ,
SUM(ISNULL(TOTVDA,0))-SUM(ISNULL(TOTDEV,0)) AS TOTVDALIQ,

(SUM(ISNULL(TOTVDA,0))-SUM(ISNULL(TOTDEV,0)))-(SUM(ISNULL(CUSTOVDA,0))-SUM(ISNULL(CUSTODEV,0)))
AS MARGEMLIQ,

CASE WHEN ((ISNULL(NULLIF(SUM(ISNULL(TOTVDA,0))-SUM(ISNULL(TOTDEV,0)),0)/NULLIF(SUM(ISNULL(CUSTOVDA,0))-SUM(ISNULL(CUSTODEV,0)),0),0))-1)*100 = -100 THEN 0
ELSE ((ISNULL(NULLIF(SUM(ISNULL(TOTVDA,0))-SUM(ISNULL(TOTDEV,0)),0)/NULLIF(SUM(ISNULL(CUSTOVDA,0))-SUM(ISNULL(CUSTODEV,0)),0),0))-1)*100
END AS MKPLIQ
FROM(
SELECT
E.CODLOJ AS LOJA,
E.Marca,
E.ESTOQUE AS Estoque,
E.CODSTK AS CODIGO,
E.CODFAB,
E.NOME,
(SELECT SUM(I.QTDADE)
FROM REQCOM AS R
LEFT JOIN ITEMCOM AS I ON(I.SID=R.SID)
WHERE(R.TIPOREQ='RC')
AND(R.CODLOJ IN [DADO8])
AND(I.CODSTK=E.CODSTK)
AND(R.DATEMI >= [DADO1])
AND(R.DATEMI <= [DADO2])
AND(R.CODVEN = [DADO5])
) AS QTDPCCMP,

(SELECT SUM(I.QTDADE)
FROM REQVDA AS R
LEFT JOIN ITEMVDA AS I ON(I.SID=R.SID)
WHERE(R.TIPOREQ='VD')AND(I.CODSTK=E.CODSTK)
AND(R.CODLOJ IN [DADO8])
AND(R.DATEMI >= [DADO1])
AND(R.DATEMI <= [DADO2])
AND(R.CODVEN = [DADO5])
AND(R.CODCPV NOT IN [DADO6])
) AS QTDPCVDA,

(SELECT SUM(I.QTDADE*I.PRCCUE)
FROM REQVDA AS R
LEFT JOIN ITEMVDA AS I ON(I.SID=R.SID)
WHERE(R.TIPOREQ='VD')AND(I.CODSTK=E.CODSTK)
AND(R.CODLOJ IN [DADO8])
AND(R.DATEMI >= [DADO1])
AND(R.DATEMI <= [DADO2])
AND(R.CODVEN = [DADO5])
AND(R.CODCPV NOT IN [DADO6])
) AS CUSTOVDA,

(SELECT SUM(I.TOTLIQ)
FROM REQVDA AS R
LEFT JOIN ITEMVDA AS I ON(I.SID=R.SID)
WHERE(R.TIPOREQ='VD')AND(I.CODSTK=E.CODSTK)
AND(R.CODLOJ IN [DADO8])
AND(R.DATEMI >= [DADO1])
AND(R.DATEMI <= [DADO2])
AND(R.CODVEN = [DADO5])
AND(R.CODCPV NOT IN [DADO6])
) AS TOTVDA,

(SELECT SUM(I.QTDADE)
FROM REQVDA AS R
LEFT JOIN ITEMVDA AS I ON(I.SID=R.SID)
WHERE(R.TIPOREQ='DV')AND(I.CODSTK=E.CODSTK)
AND(R.CODLOJ IN [DADO8])
AND(R.DATEMI >= [DADO1])
AND(R.DATEMI <= [DADO2])
AND(R.CODVEN = [DADO5])
AND(R.CODCPV NOT IN [DADO6])
) AS QTDPCDEV,

(SELECT SUM(I.QTDADE*I.PRCCUE)
FROM REQVDA AS R
LEFT JOIN ITEMVDA AS I ON(I.SID=R.SID)
WHERE(R.TIPOREQ='DV')AND(I.CODSTK=E.CODSTK)
AND(R.CODLOJ IN [DADO8])
AND(R.DATEMI >= [DADO1])
AND(R.DATEMI <= [DADO2])
AND(R.CODVEN = [DADO5])
AND(R.CODCPV NOT IN [DADO6])
) AS CUSTODEV,

(SELECT SUM(I.TOTLIQ)
FROM REQVDA AS R
LEFT JOIN ITEMVDA AS I ON(I.SID=R.SID)
WHERE(R.TIPOREQ='DV')AND(I.CODSTK= E.CODSTK)
AND(R.CODLOJ IN [DADO8])
AND(R.DATEMI >= [DADO1])
AND(R.DATEMI <= [DADO2])
AND(R.CODVEN = [DADO5])
AND(R.CODCPV NOT IN [DADO6])
) AS TOTDEV

FROM ITEMSTK AS E
WHERE(E.TIPOSTK='P')
AND(E.CODLOJ IN [DADO8])
AND(E.MARCA LIKE [DADO3])

) AS REL
GROUP BY LOJA,MARCA,CODIGO,CODFAB,NOME

Leandro Santana
   - 06 nov 2012

Muito obrigado ,ja ajudou bastante.