ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Relatório agrupado por Mês [Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Jun 08, 2021 11:23 am    Assunto: Relatório agrupado por Mês [Resolvido] Responder com Citação

Bom dia,

Tenho um relatório FastReport que listo quantos atendimentos agrupados por atendentes em certo periodo de tempo.



Utilizo esse SQL no MySQL:
Código:
 SELECT u.nomusu AS Atendente,
 COUNT(c.usuarioti) as Qtde from chamados c
 inner JOIN usuarios.uusuarios u
 ON c.usuarioti = u.codusu
 where cast(datainc as DATE) >= '2021-05-01' and cast(datainc as DATE) <= '2021-07-31'
 group by usuarioti
 ORDER BY Qtde Desc


Estou precisando modificar este relatório para fazer esta contagem por mês e a quantidade total.

Ficaria mais ou menos assim:



Como fazer este SQL e relatório?

Obrigado.
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin


Editado pela última vez por natanbh1 em Qua Jun 09, 2021 5:05 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jun 08, 2021 12:00 pm    Assunto: Responder com Citação

Bom dia,

Não tenho experiência com o MySQL mas acredito que você possa utilizar o comando Case dentro da função Count para obter as quantidades por mês:

Código:
SELECT
    u.nomusu AS Atendente,
    COUNT(case when MONTH(datainc) = 5 then c.usuarioti end) as Maio,
    COUNT(case when MONTH(datainc) = 6 then c.usuarioti end) as Junho,
    COUNT(case when MONTH(datainc) = 7 then c.usuarioti end) as Julho,
    COUNT(c.usuarioti) as Qtde
from -- ...


Espero que ajude

_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis/venda-mogi_das_cruzes-residencial-apartamento


Editado pela última vez por imex em Seg Set 20, 2021 9:37 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Jun 09, 2021 10:43 am    Assunto: Responder com Citação

Bom dia Imex,

Obrigado pela resposta, funcionou bem.

Será que já é possível identificar os meses de forma dinâmica no SQL dependendo do intervalo que o usuário escolher no filtro de datas?

Por exemplo, usuário escolheu o intervalo de Janeiro/21 até Abril/21 e o SQL já trazer o agrupamento por mes dinamicamente (4 meses, neste caso) como foi feito de forma fixa no SQL.

Se não for possível, já agradeço porque acho que consigo tentar montar SQL pelo Delphi de acordo com o intervalo selecionado.

Obrigado.
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jun 09, 2021 4:21 pm    Assunto: Responder com Citação

Boa tarde,

Não consigo dizer em relação ao MySQL mas de forma geral costuma ser bem mais simples montar essas consultas de forma dinâmica na aplicação do que no banco de dados.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Jun 09, 2021 5:05 pm    Assunto: Responder com Citação

Verdade, Imex. Consegui montar a consulta SQL na aplicação dinamicamente.

Deu mais trabalho criar o relatório FastReport com campos dinâmicos mas também consegui.

Obrigado.
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9098
Localização: Sinop-MT

MensagemEnviada: Qui Jun 10, 2021 10:58 am    Assunto: Responder com Citação

vc pode montar um cross report no fast, usando o sql exemplo:

Código:
SELECT u.nomusu AS Atendente,
  YEAR(data) AS ano
  MONTH(data) AS mes
  COUNT(c.usuarioti) as Qtde from chamados c
INNER JOIN usuarios.uusuarios u ON c.usuarioti = u.codusu
WHERE cast(datainc as DATE) BETWEEN '2021-05-01' AND '2021-07-31'
GROUP BY  usuarioti, YEAR(data), MONTH(data)
ORDER BY Qtde Desc


nosso grupo de Fast no whats
https://chat.whatsapp.com/KRrNhgyuPuy1o5Y2V1bN1T

nosso grupo de BD no whats
https://chat.whatsapp.com/ENhIQV7mKCoEGi7wia5zgG
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB