- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ajuda com SQL de agrupamento por mês
×
Linguagem de Programação ADVPL
Perguntas Ajuda com SQL de agrupamento por mês
- clistenis
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 97
- Obrigados Recebidos: 0
10 anos 10 meses atrás #19889
por clistenis
Ajuda com SQL de agrupamento por mês foi criado por clistenis
Pessoal bom dia. Feliz 2014 a todos com muito sucesso, paz e saúde.
Estou com uma dúvida em gerar uma SQL na SD2 para gerar o faturamento pelos itens da nota fiscal de saída por mês.
Porém estou me deparando com problemas no tipo do campo D2_EMISSAO
Seria uma SQL para mostrar o D2_emissao e somar o d2_quant e d2_total (sum(d2_quant) e sum(d2_total) e agrupar por mês.
Mais já tentei de tudo e nada
Alguém já passou por isso ?
Meu banco é Oracle 11g
Abração a todos.
Estou com uma dúvida em gerar uma SQL na SD2 para gerar o faturamento pelos itens da nota fiscal de saída por mês.
Porém estou me deparando com problemas no tipo do campo D2_EMISSAO
Seria uma SQL para mostrar o D2_emissao e somar o d2_quant e d2_total (sum(d2_quant) e sum(d2_total) e agrupar por mês.
Mais já tentei de tudo e nada
Alguém já passou por isso ?
Meu banco é Oracle 11g
Abração a todos.
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
10 anos 10 meses atrás #19891
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Ajuda com SQL de agrupamento por mês
VAMOS LÁ, NÃO TESTEI:
SELECT LEFT(D2_EMISSAO,6) REFERENCIA, SUM(D2_QUANT), SUM(D2_TOTAL)
FROM SD2010
WHERE D_E_L_E_T_ = ' '
GROUP BY LEFT(D2_EMISSAO,6)
ORDER BY LEFT(D2_EMISSAO,6)
SELECT LEFT(D2_EMISSAO,6) REFERENCIA, SUM(D2_QUANT), SUM(D2_TOTAL)
FROM SD2010
WHERE D_E_L_E_T_ = ' '
GROUP BY LEFT(D2_EMISSAO,6)
ORDER BY LEFT(D2_EMISSAO,6)
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- clistenis
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 97
- Obrigados Recebidos: 0
10 anos 10 meses atrás #19894
por clistenis
Respondido por clistenis no tópico Ajuda com SQL de agrupamento por mês
Amigo Luiz obrigado pela ajudar, mais deu erro no LEFT.
Consegui fazer da seguinte forma, segue como base de conhecimento para o fórum.
SELECT to_char(to_date(d2_emissao,'YYYYMMDD'),'yyyymm') mes, sum(d2_total) valor,sum(d2_quant) quantidade, d2_grupo grupo
from sd2010
WHERE D2_EMISSAO BETWEEN '20120701' AND '20120731'
AND (SELECT F4_ESTOQUE FROM SF4010 WHERE F4_CODIGO = D2_TES and D_E_L_E_T_ != '*') = 'S'
AND (SELECT F4_DUPLIC FROM SF4010 WHERE F4_CODIGO = D2_TES and D_E_L_E_T_ != '*') = 'S'
and d_e_l_e_t_ != '*'
group by to_char(to_date(d2_emissao,'YYYYMMDD'),'yyyymm'), d2_grupo
order by to_char(to_date(d2_emissao,'YYYYMMDD'),'yyyymm'), d2_grupo
Obrigado.
Consegui fazer da seguinte forma, segue como base de conhecimento para o fórum.
SELECT to_char(to_date(d2_emissao,'YYYYMMDD'),'yyyymm') mes, sum(d2_total) valor,sum(d2_quant) quantidade, d2_grupo grupo
from sd2010
WHERE D2_EMISSAO BETWEEN '20120701' AND '20120731'
AND (SELECT F4_ESTOQUE FROM SF4010 WHERE F4_CODIGO = D2_TES and D_E_L_E_T_ != '*') = 'S'
AND (SELECT F4_DUPLIC FROM SF4010 WHERE F4_CODIGO = D2_TES and D_E_L_E_T_ != '*') = 'S'
and d_e_l_e_t_ != '*'
group by to_char(to_date(d2_emissao,'YYYYMMDD'),'yyyymm'), d2_grupo
order by to_char(to_date(d2_emissao,'YYYYMMDD'),'yyyymm'), d2_grupo
Obrigado.
Por favor Acessar ou Registrar para participar da conversa.
- leopoldomleal
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 1
- Obrigados Recebidos: 0
10 anos 10 meses atrás #19896
por leopoldomleal
Respondido por leopoldomleal no tópico Ajuda com SQL de agrupamento por mês
SELECT [YEAR] AS ano,
SUM(CASE [MONTH] WHEN 1 THEN QUANT ELSE 0 END) AS 'jan',
SUM(CASE [MONTH] WHEN 2 THEN QUANT ELSE 0 END) AS 'fev',
SUM(CASE [MONTH] WHEN 3 THEN QUANT ELSE 0 END) AS 'mar',
SUM(CASE [MONTH] WHEN 4 THEN QUANT ELSE 0 END) AS 'abr',
SUM(CASE [MONTH] WHEN 5 THEN QUANT ELSE 0 END) AS 'mai',
SUM(CASE [MONTH] WHEN 6 THEN QUANT ELSE 0 END) AS 'jun',
SUM(CASE [MONTH] WHEN 7 THEN QUANT ELSE 0 END) AS 'jul',
SUM(CASE [MONTH] WHEN 8 THEN QUANT ELSE 0 END) AS 'ago',
SUM(CASE [MONTH] WHEN 9 THEN QUANT ELSE 0 END) AS 'set',
SUM(CASE [MONTH] WHEN 10 THEN QUANT ELSE 0 END) AS 'out',
SUM(CASE [MONTH] WHEN 11 THEN QUANT ELSE 0 END) AS 'nov',
SUM(CASE [MONTH] WHEN 12 THEN QUANT ELSE 0 END) AS 'dez'
FROM
(
SELECT
YEAR(D2.D2_EMISSAO) AS [YEAR],
MONTH(D2.D2_EMISSAO) AS [MONTH],
ISNULL(SUM(D2_QUANT),0) AS QUANT
FROM SD2010 D2 with (nolock)
JOIN SF4010 F4 with (nolock) ON( F4_FILIAL=D2_FILIAL AND
F4_CODIGO=D2_TES )
WHERE
D2.D_E_L_E_T_ <> '*' AND
F4_DUPLIC = 'S' AND
YEAR(D2_EMISSAO) >= YEAR(GETDATE())-4 AND
D2_QTDEDEV=0
GROUP BY YEAR(D2.D2_EMISSAO), MONTH(D2.D2_EMISSAO)
)T0
GROUP BY [YEAR]
SUM(CASE [MONTH] WHEN 1 THEN QUANT ELSE 0 END) AS 'jan',
SUM(CASE [MONTH] WHEN 2 THEN QUANT ELSE 0 END) AS 'fev',
SUM(CASE [MONTH] WHEN 3 THEN QUANT ELSE 0 END) AS 'mar',
SUM(CASE [MONTH] WHEN 4 THEN QUANT ELSE 0 END) AS 'abr',
SUM(CASE [MONTH] WHEN 5 THEN QUANT ELSE 0 END) AS 'mai',
SUM(CASE [MONTH] WHEN 6 THEN QUANT ELSE 0 END) AS 'jun',
SUM(CASE [MONTH] WHEN 7 THEN QUANT ELSE 0 END) AS 'jul',
SUM(CASE [MONTH] WHEN 8 THEN QUANT ELSE 0 END) AS 'ago',
SUM(CASE [MONTH] WHEN 9 THEN QUANT ELSE 0 END) AS 'set',
SUM(CASE [MONTH] WHEN 10 THEN QUANT ELSE 0 END) AS 'out',
SUM(CASE [MONTH] WHEN 11 THEN QUANT ELSE 0 END) AS 'nov',
SUM(CASE [MONTH] WHEN 12 THEN QUANT ELSE 0 END) AS 'dez'
FROM
(
SELECT
YEAR(D2.D2_EMISSAO) AS [YEAR],
MONTH(D2.D2_EMISSAO) AS [MONTH],
ISNULL(SUM(D2_QUANT),0) AS QUANT
FROM SD2010 D2 with (nolock)
JOIN SF4010 F4 with (nolock) ON( F4_FILIAL=D2_FILIAL AND
F4_CODIGO=D2_TES )
WHERE
D2.D_E_L_E_T_ <> '*' AND
F4_DUPLIC = 'S' AND
YEAR(D2_EMISSAO) >= YEAR(GETDATE())-4 AND
D2_QTDEDEV=0
GROUP BY YEAR(D2.D2_EMISSAO), MONTH(D2.D2_EMISSAO)
)T0
GROUP BY [YEAR]
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ajuda com SQL de agrupamento por mês
Tempo para a criação da página:0.115 segundos