Bom dia galera, sou novo no forum, peço desculpas caso esteja upando em lugar errado, eu tenho um script de relatorio gerencial, onde o resultado deveria vir agrupado por periodo, mas nesse relatorio preciso imprimir em tela valores atuais e o last year, pra configurar o last year inseri uma subconsulta, mas essa subconsulta esta complicando minha vida, o resultado vem por dia ao inves do periodo por filial.
Segue script abaixo, agradeço desde ja.
SELECT
A.FILIAL,
Vendas = SUM(CASE WHEN C.TERMINAL IN ('001','002','003') THEN VALOR_PAGO END),
--Vendas_LY = SUM(CASE WHEN C.TERMINAL IN ('001','002','003') AND C.DATA_VENDA = DATEADD(year,-1,C.DATA_VENDA) THEN VALOR_PAGO END),
Vendas_LY = (
SELECT SUM(VALOR_PAGO)
FROM LOJA_VENDA
WHERE TERMINAL IN ('001','002','003')
AND CODIGO_FILIAL = C.CODIGO_FILIAL
AND DATA_VENDA = DATEADD(year,-1,C.DATA_VENDA)
GROUP BY CODIGO_FILIAL) ,
DATEADD(year,-1,C.DATA_VENDA), -- TESTE PARA VISUALIZAÇAO DA DATA
--T002 = SUM(CASE WHEN C.TERMINAL =002 THEN VALOR_PAGO END),
--T003 = SUM(CASE WHEN C.TERMINAL =003 THEN VALOR_PAGO END),
Pedidos = SUM(CASE WHEN C.TERMINAL =100 THEN VALOR_PAGO END),
SUM(QTDE_TOTAL) AS QTDE_TOTAL,
SUM(VALOR_PAGO) AS TOTAL,
COUNT(C.TICKET) AS TICKETS,
SUM(QTDE_TOTAL)/COUNT(C.TICKET) AS PA,
SUM(VALOR_PAGO)/COUNT(C.TICKET) AS MEDIA
FROM
FILIAIS AS A,
LOJA_FORMAS_PGTO AS B,
LOJA_VENDA AS C,
LOJA_VENDA_PGTO AS D,
LOJA_VENDEDORES AS E
WHERE
C.CODIGO_FILIAL = E.CODIGO_FILIAL AND
C.VENDEDOR = E.VENDEDOR AND
D.CODIGO_FILIAL = C.CODIGO_FILIAL AND
D.CODIGO_FILIAL = E.CODIGO_FILIAL AND
D.LANCAMENTO_CAIXA = C.LANCAMENTO_CAIXA AND
D.TERMINAL = C.TERMINAL AND
D.COD_FORMA_PGTO = B.COD_FORMA_PGTO AND
A.COD_FILIAL = C.CODIGO_FILIAL AND
(
(C.TOTAL_QTDE_CANCELADA = '0') AND
(C.DATA_VENDA BETWEEN '20170101' AND '20170131')) AND
C.OPERACAO_VENDA IN ('001','002','007','008') AND
E.VENDEDOR_APELIDO NOT LIKE '%ATACADO%'
--AND A.FILIAL NOT IN ('PALMEIRAS','E-COMMERCE')
GROUP BY
C.DATA_VENDA,
A.FILIAL,
C.CODIGO_FILIAL
ORDER BY TOTAL DESC
Pergunta
luminatti
Bom dia galera, sou novo no forum, peço desculpas caso esteja upando em lugar errado, eu tenho um script de relatorio gerencial, onde o resultado deveria vir agrupado por periodo, mas nesse relatorio preciso imprimir em tela valores atuais e o last year, pra configurar o last year inseri uma subconsulta, mas essa subconsulta esta complicando minha vida, o resultado vem por dia ao inves do periodo por filial.
Segue script abaixo, agradeço desde ja.
SELECT
A.FILIAL,
Vendas = SUM(CASE WHEN C.TERMINAL IN ('001','002','003') THEN VALOR_PAGO END),
--Vendas_LY = SUM(CASE WHEN C.TERMINAL IN ('001','002','003') AND C.DATA_VENDA = DATEADD(year,-1,C.DATA_VENDA) THEN VALOR_PAGO END),
Vendas_LY = (
SELECT SUM(VALOR_PAGO)
FROM LOJA_VENDA
WHERE TERMINAL IN ('001','002','003')
AND CODIGO_FILIAL = C.CODIGO_FILIAL
AND DATA_VENDA = DATEADD(year,-1,C.DATA_VENDA)
GROUP BY CODIGO_FILIAL) ,
DATEADD(year,-1,C.DATA_VENDA), -- TESTE PARA VISUALIZAÇAO DA DATA
--T002 = SUM(CASE WHEN C.TERMINAL =002 THEN VALOR_PAGO END),
--T003 = SUM(CASE WHEN C.TERMINAL =003 THEN VALOR_PAGO END),
Pedidos = SUM(CASE WHEN C.TERMINAL =100 THEN VALOR_PAGO END),
SUM(QTDE_TOTAL) AS QTDE_TOTAL,
SUM(VALOR_PAGO) AS TOTAL,
COUNT(C.TICKET) AS TICKETS,
SUM(QTDE_TOTAL)/COUNT(C.TICKET) AS PA,
SUM(VALOR_PAGO)/COUNT(C.TICKET) AS MEDIA
FROM
FILIAIS AS A,
LOJA_FORMAS_PGTO AS B,
LOJA_VENDA AS C,
LOJA_VENDA_PGTO AS D,
LOJA_VENDEDORES AS E
WHERE
C.CODIGO_FILIAL = E.CODIGO_FILIAL AND
C.VENDEDOR = E.VENDEDOR AND
D.CODIGO_FILIAL = C.CODIGO_FILIAL AND
D.CODIGO_FILIAL = E.CODIGO_FILIAL AND
D.LANCAMENTO_CAIXA = C.LANCAMENTO_CAIXA AND
D.TERMINAL = C.TERMINAL AND
D.COD_FORMA_PGTO = B.COD_FORMA_PGTO AND
A.COD_FILIAL = C.CODIGO_FILIAL AND
(
(C.TOTAL_QTDE_CANCELADA = '0') AND
(C.DATA_VENDA BETWEEN '20170101' AND '20170131')) AND
C.OPERACAO_VENDA IN ('001','002','007','008') AND
E.VENDEDOR_APELIDO NOT LIKE '%ATACADO%'
--AND A.FILIAL NOT IN ('PALMEIRAS','E-COMMERCE')
GROUP BY
C.DATA_VENDA,
A.FILIAL,
C.CODIGO_FILIAL
ORDER BY TOTAL DESC
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.