Fórum Criar relatório de freqüência de associados #389101

21/10/2010

0

Pessoal,
Preciso criar um relatório de freqüência de associado.Com a ajuda de alguns colegas, eu criei um select com a seguinte instrução:
Select dia,  mes,  count(1) as quantidade,  case semana                                                                            when 0 then 'DOM'                                                                            when 1 then 'SEG'                                                                            when 1 then 'TER'                                                                            when 1 then 'QUA'                                                                            when 1 then 'QUI'                                                                            when 1 then 'SEX'                                                                            when 1 then 'SAB'                                                                     end
From (select extract(day from ac001.dtentrada) as dia,                     extract(month from ac001.dtentrada) as mes,                     extract(weekday from ac001.dtentrada) as semana,                   ac001.idsocio
          from ac001         where dtentrada BETWEEN :PAR_DATAINI AND PAR_DATAFIN         group by extract(month from ac001.dtentrada),                         extract(day from ac001.dtentrada),                        extract(weekday from ac001.dtentrada),                       ac001.idsocio)
 group by dia, mes, semana order by 2, 1
Esse select me retornou exatamente o que eu preciso porem da seguinte forma, por exemplo:
dia mes quantidade semana29 09 1300 SEX30 09 1200 SAB19 10 1450 TER20 10 1200 QUA21 10 1500 QUI
Agora vem a pergunta, como criar um relatório no FastReport ou ClientDataSet para que possa ler e montar o layout da seguinte maneira:
09 - Setembro 01 02 03 04 05 06 07 08 09.... 20 21 22.... 29 30 31                                      SEX   SAB     1300 1200
10 - Outubro   01 02 03 04 05 06 07 08 09.... 20 21 22.... 29 30 31                                                                                      TER          QUA  QUI                                                                      1450        1200 1500
Obrigado pela ajuda
Silvio Morelo

Silvio Morelo

Responder

Posts

21/10/2010

Emerson Nascimento

não vou responder a sua pergunta, mas talvez melhore a performance da sua pesquisa... evite usar subselects. elas muitas vezes são imprecindíveis, mas acho que não é o seu caso. você pode fazer tudo numa única instrução:

select
  extract(day from ac001.dtentrada) as dia,
  extract(month from ac001.dtentrada) as mes,
  (case (weekday from ac001.dtentrada)
     when 0 then 'DOM'
     when 1 then 'SEG'
     when 2 then 'TER'
     when 3 then 'QUA'
     when 4 then 'QUI'
     when 5 then 'SEX'
     when 6 then 'SAB'
  end) as semana,
  count(distinct ac001.idsocio) as quantidade
from
  ac001
where
  dtentrada BETWEEN :PAR_DATAINI AND :PAR_DATAFIN
group by
  extract(month from ac001.dtentrada),
  extract(day from ac001.dtentrada),
  extract(weekday from ac001.dtentrada)
order by
  2, 1

Responder

Gostei + 0

22/10/2010

Silvio Morelo


 
Amerson, obrigado pela dica.
Só tem uma coisa, quando eu informo os valores dos parâmetros pelo IB Expert por exemplo, a consulta retorna vazia, porem se eu colocar da maneira abaixo a consulta retorna com as informações corretas?

ac001.dtentrada BETWEEN '2010/01/01' AND '2010/12/31' -- Consulta retorna as informações corretasdtentrada BETWEEN :PAR_DATAINI AND :PAR_DATAFIN -- Não retorna nada.
Obrigado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar