Olá Alex !
Alex se tiver como você passar um diagrama das tabelas, que você precisa fazer esse SQL ! , eu posso lhe ajudar. Porque ficaria mais fácil de visualizar o relacionamento entre as tabelas. Qualquer coisa manda no meu e-mail : eliel_martins@hotmail.com
Até mais.
Eliel G. Martins
Oi Eliel, boa tarde!!
sou novato nesse lance de montagens de scripts, sql server, etc; Apesar de estar concluindo um curso de sql server, mas infelizmente na minha opniao eh bem superficial.
Eu nao sei bem o que seria o diagrama, rsrsrs, nem como fazer para manda-lo para vc, pode ser que seja simples, pq ainda nao tentei fazer nada do tipo. rssr
O problema basicamente eh o seguinte, aqui na empresa usamos um sistema ERP que os relatorios sao montados por um ambiente onde eu monto os scripts do sql e isso eh utilizando pelo ERP no layout que eu fizer posterior.
No caso deste relatorio em especifico, eu preciso apresentar alguns totais referente a soma geral de todas as minhas lojas(matriz e filiais), e essas base sao separadas, uma base para cada loja.
E tenho uma tabelz de fabricantes, uma tabela de produtos e as tabelas de cabecalhos de vendas e itens de vendas, e eu preciso dar esses totais.
Agora, no caso de enviar o diagrama vou verificar como faz e te passo.
obrigado desde ja.
Abraco.
26/05/2011
Emerson Nascimento
esse é o caminho:
SELECT
PROD.MARCA,
SUM(IT.QUANTIDADE) QTDTOTAL,
SUM(IT.QUANTIDADE * IT.VALORUNITARIO) VALORVENDA
FROM
ITEMVENDA IT
LEFT JOIN
PRODUTO PROD ON PROD.ID_PRODUTO = IT.ID_PRODUTO
GROUP BY
PROD.MARCA
para que seja lhe passado uma instrução mais objetiva é preciso conhecer seu banco de dados: onde está gravado o estoque atual, de onde são obtidas as devoluções, como calcular o lucro, etc.
pelas tabela que você apresentou só consegui pressupor onde obter a marca, valor total das vendas dessa marca e a quantidade total vendida. (ali está listado somente por marca, e não por marca+produto).
se você puder publicar a estrutura das tabelas envolvidas nessa questão ajuda bastante.
Ok, farei a divulgacao das tabelas, e do que ja tenho montado de script.
No script eu passo alguns parametros particulares do ERP.
ja ja eu posto aqui.
obrigado!!!
abraco!!!
Pois bem, vamos la...
Estou postando abaixo o script que estou utilizando para montar o relatorio no nosso ERP.
Alguns campos foram ajustados para ser possivel executar no SSMS, e alguns itens estao em comentario porque sao parametros especificoes utilizados no nosso ERP.
Postarei em seguida as estruturas das tabelas.
Obrigado!!!
Abraco.
--[SQL]
SELECT
I.MARCA,
(CASE WHEN (1=1) THEN (SELECT SUM(E.Estoque) FROM JACSYSDB.DBO.ITEMSTK E WHERE E.MARCA=I.MARCA) ELSE 0 END)AS Estoque,
(CASE WHEN (I.MOVSTK='S') THEN I.QTDADE ELSE 0 END) AS QTDVenda,
(CASE WHEN (I.MOVSTK='E') THEN I.QTDADE ELSE 0 END) AS QTDDevolucao,
SUM(0.00) AS QTDVDALIQ,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ ELSE 0 END) AS Venda,
(CASE WHEN (I.MOVSTK='E') THEN I.TOTLIQ ELSE 0 END) AS Devolucao,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ ELSE -I.TOTLIQ END) AS Total,
(CASE WHEN (I.MOVSTK='S') THEN (I.PRCCUE*I.QTDADE) ELSE 0 END) AS Custo,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ -(I.PRCCUE*I.QTDADE) ELSE 0 END) AS Margem,
(CASE WHEN I.PRCCUE=0 THEN 1 ELSE (I.PRCLIQ/I.PRCCUE) END) AS MarkUP
FROM JACSYSDB.DBO.REQVDA AS R
LEFT JOIN JACSYSDB.DBO.ITEMVDA AS I ON (I.SID=R.SID)
WHERE (R.TIPOREQ IN ('VD','DV'))
AND (R.DATEMI >= '01.04.2011')
AND (R.DATEMI <= '30.04.2011')
--AND (R.CODVEN = [DADO3])
--AND (I.MARCA LIKE [DADO4])
GROUP BY R.CODLOJ,I.MARCA,I.QTDADE,I.MOVSTK,I.TOTLIQ,I.PRCCUE,I.PRCLIQ
UNION
SELECT
I.MARCA,
(CASE WHEN (1=1) THEN (SELECT SUM(E.Estoque) FROM JACSYSDB2.DBO.ITEMSTK E WHERE E.MARCA=I.MARCA) ELSE 0 END)AS Estoque,
(CASE WHEN (I.MOVSTK='S') THEN I.QTDADE ELSE 0 END) AS QTDVenda,
(CASE WHEN (I.MOVSTK='E') THEN I.QTDADE ELSE 0 END) AS QTDDevolucao,
SUM(0.00) AS QTDVDALIQ,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ ELSE 0 END) AS Venda,
(CASE WHEN (I.MOVSTK='E') THEN I.TOTLIQ ELSE 0 END) AS Devolucao,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ ELSE -I.TOTLIQ END) AS Total,
(CASE WHEN (I.MOVSTK='S') THEN (I.PRCCUE*I.QTDADE) ELSE 0 END) AS Custo,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ -(I.PRCCUE*I.QTDADE) ELSE 0 END) AS Margem,
(CASE WHEN I.PRCCUE=0 THEN 1 ELSE (I.PRCLIQ/I.PRCCUE) END) AS MarkUP
FROM JACSYSDB2.DBO.REQVDA AS R
LEFT JOIN JACSYSDB2.DBO.ITEMVDA AS I ON (I.SID=R.SID)
WHERE (R.TIPOREQ IN ('VD','DV'))
AND (R.DATEMI >= '01.04.2011')
AND (R.DATEMI <= '30.04.2011')
--AND (R.CODVEN = [DADO3])
--AND (I.MARCA LIKE [DADO4])
GROUP BY R.CODLOJ,I.MARCA,I.QTDADE,I.MOVSTK,I.TOTLIQ,I.PRCCUE,I.PRCLIQ
UNION
SELECT
I.MARCA,
(CASE WHEN (1=1) THEN (SELECT SUM(E.Estoque) FROM JACSYSDB3.DBO.ITEMSTK E WHERE E.MARCA=I.MARCA) ELSE 0 END)AS Estoque,
(CASE WHEN (I.MOVSTK='S') THEN I.QTDADE ELSE 0 END) AS QTDVenda,
(CASE WHEN (I.MOVSTK='E') THEN I.QTDADE ELSE 0 END) AS QTDDevolucao,
SUM(0.00) AS QTDVDALIQ,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ ELSE 0 END) AS Venda,
(CASE WHEN (I.MOVSTK='E') THEN I.TOTLIQ ELSE 0 END) AS Devolucao,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ ELSE -I.TOTLIQ END) AS Total,
(CASE WHEN (I.MOVSTK='S') THEN (I.PRCCUE*I.QTDADE) ELSE 0 END) AS Custo,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ -(I.PRCCUE*I.QTDADE) ELSE 0 END) AS Margem,
(CASE WHEN I.PRCCUE=0 THEN 1 ELSE (I.PRCLIQ/I.PRCCUE) END) AS MarkUP
FROM JACSYSDB3.DBO.REQVDA AS R
LEFT JOIN JACSYSDB3.DBO.ITEMVDA AS I ON (I.SID=R.SID)
WHERE (R.TIPOREQ IN ('VD','DV'))
AND (R.DATEMI >= '01.04.2011')
AND (R.DATEMI <= '30.04.2011')
--AND (R.CODVEN = [DADO3])
--AND (I.MARCA LIKE [DADO4])
GROUP BY R.CODLOJ,I.MARCA,I.QTDADE,I.MOVSTK,I.TOTLIQ,I.PRCCUE,I.PRCLIQ
UNION
SELECT
I.MARCA,
(CASE WHEN (1=1) THEN (SELECT SUM(E.Estoque) FROM JACSYSDB4.DBO.ITEMSTK E WHERE E.MARCA=I.MARCA) ELSE 0 END)AS Estoque,
(CASE WHEN (I.MOVSTK='S') THEN I.QTDADE ELSE 0 END) AS QTDVenda,
(CASE WHEN (I.MOVSTK='E') THEN I.QTDADE ELSE 0 END) AS QTDDevolucao,
SUM(0.00) AS QTDVDALIQ,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ ELSE 0 END) AS Venda,
(CASE WHEN (I.MOVSTK='E') THEN I.TOTLIQ ELSE 0 END) AS Devolucao,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ ELSE -I.TOTLIQ END) AS Total,
(CASE WHEN (I.MOVSTK='S') THEN (I.PRCCUE*I.QTDADE) ELSE 0 END) AS Custo,
(CASE WHEN (I.MOVSTK='S') THEN I.TOTLIQ -(I.PRCCUE*I.QTDADE) ELSE 0 END) AS Margem,
(CASE WHEN I.PRCCUE=0 THEN 1 ELSE (I.PRCLIQ/I.PRCCUE) END) AS MarkUP
FROM JACSYSDB4.DBO.REQVDA AS R
LEFT JOIN JACSYSDB4.DBO.ITEMVDA AS I ON (I.SID=R.SID)
WHERE (R.TIPOREQ IN ('VD','DV'))
AND (R.DATEMI >= '01.04.2011')
AND (R.DATEMI <= '30.04.2011')
--AND (R.CODVEN = [DADO3])
--AND (I.MARCA LIKE [DADO4])
GROUP BY R.CODLOJ,I.MARCA,I.QTDADE,I.MOVSTK,I.TOTLIQ,I.PRCCUE,I.PRCLIQ
/*[END]
--[GRUPOBY]
{CP=MARCA}{C1=QTDVENDA}{C2=QTDDEVOLUCAO}{C3=QTDVDALIQ}{C4=VENDA}{C5=DEVOLUCAO}{C6=TOTAL}{C7=MARGEM}{C8=CUSTO}
[END]
[RODAPE]
Markup=SUM(VENDA)/SUM(Custo)
{CM=Markup} {C1=VENDA} / {C2=Custo}
[END]
[TOTALIZADOR]
MARKUP=DIV(/)
[END]
[TOTALIZADOR2]
QTDVDALIQ=SUB()
[END]
[FORMATACAO]
ESTOQUE=,#0.###
QTDVenda=,#0.###
QTDDEVOLUCAO=,#0.###
TOTAL=,#0.00
CUSTO=,#0.00
VENDA=,#0.00
MARKUP=,#0.000
MARGEM=,#0.00
DEVOLUCAO=,#0.00
QTDVDALIQ=,#0.### |Qtd. Vda. Liq.
#GDC=/CHAVE/
[END]
[PARAMETROS]
{CAMPO=[DADO1]} {TIPO=D} {OPR= >=} {TITULO=De} {DEF=DD/MM/YY}
{CAMPO=[DADO2]} {TIPO=D} {OPR= <=} {TITULO=Ate} {DEF=DD/MM/YY}
{CAMPO=[DADO3]} {TIPO=T} {OPR= =} {TITULO=Cod.Vendedor}{CD=CLI}
{CAMPO=[DADO4]} {TIPO=T} {OPR= LIKE}{TITULO=Marca} {CD=MARCA}
[END]
[RELATORIO]
FILTRO=[DADO1] [DADO2]
[END]
*/