Relatório Mensal em Colunas

Delphi

16/05/2006

Oi pessoal, blz?

Estou com a seguinte dúvida me perseguindo a um tempo, sem resposta...

Como faço para criar um relatório, quebrando por mês, e colocando os dados de cada mês nas colunas correspondentes??
Exemplo:

-----------Jan----Fev----Mar----Abr----Mai----Jun
Cliente1---03------15-----11------07------09-----16
Cliente2---15------15-----16------25------13-----10
Cliente3---10------15-----11------20------16-----14
Cliente4---16------15-----17------14------13-----19

Não tenho a mínima idéia de como fazer isto...
No momento uso Quick Report, mas caso haja necessidade, posso usar outro gerador de relatórios, caso ajude.

Agradeço antecipadamente a atenção.
Abraços!
Fernando


Robotpost

Robotpost

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

16/05/2006

o gerador de relatórios não é o problema maior.
qual o banco de dados que você usa?


GOSTEI 0
Robotpost

Robotpost

16/05/2006

Oi Emerson.

Antes de mais nada obrigado por se prontificar a me ajudar.

Estou usando SQL Server 2000.

Abraço,

Fernando


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

16/05/2006

pode ser numa instrução direta ou via stored procedure.

um exemplo:
select
  cliente,
  sum(case
      when month(data)=01
      then fretetotal
      else 0 end) Jan,
  sum(case
      when month(data)=02
      then fretetotal
      else 0 end) Fev,
  sum(case
      when month(data)=03
      then fretetotal
      else 0 end) Mar,
  sum(case
      when month(data)=04
      then fretetotal
      else 0 end) Abr,
  sum(case
      when month(data)=05
      then fretetotal
      else 0 end) Mai,
  sum(case
      when month(data)=06
      then fretetotal
      else 0 end) Jun
from
  pedidos
where
  year(data) = 2005
group by
  cliente



GOSTEI 0
Robotpost

Robotpost

16/05/2006

Emerson,

Tenho que dar os parabéns, pois ficou exatamente como eu queria.

Só mais uma dúvida.

Tenho como eu trazer os dados, separado por categoria e cliente?
Exemplo:

-----------Jan----Fev----Mar----Abr----Mai----Jun
Gastos com Impressão
Cliente1---03------15-----11------07------09-----16
Cliente2---15------15-----16------25------13-----10
Cliente3---10------15-----11------20------16-----14
Cliente4---16------15-----17------14------13-----19
Gastos com Transporte
Cliente1---03------15-----11------07------09-----16
Cliente2---15------15-----16------25------13-----10
Cliente3---10------15-----11------20------16-----14
Cliente4---16------15-----17------14------13-----19
Gastos com Alimentação
Cliente1---03------15-----11------07------09-----16
Cliente2---15------15-----16------25------13-----10
Cliente3---10------15-----11------20------16-----14
Cliente4---16------15-----17------14------13-----19
Gastos com Hospedagem
Cliente1---03------15-----11------07------09-----16
Cliente2---15------15-----16------25------13-----10
Cliente3---10------15-----11------20------16-----14
Cliente4---16------15-----17------14------13-----19

Fui copiando os dados, mas é mais ou menos isto que preciso.

Obrigado mais uma vez, foi uma dica muito valiosa a sua.

Abraço,

Fernando


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

16/05/2006

select 
  categoria,
  cliente,
  sum(case
      when month(data)=01
      then fretetotal
      else 0 end) Jan,
  sum(case
      when month(data)=02
      then fretetotal
      else 0 end) Fev,
  sum(case
      when month(data)=03
      then fretetotal
      else 0 end) Mar,
  sum(case
      when month(data)=04
      then fretetotal
      else 0 end) Abr,
  sum(case
      when month(data)=05
      then fretetotal
      else 0 end) Mai,
  sum(case
      when month(data)=06
      then fretetotal
      else 0 end) Jun
from
  pedidos
where
  year(data) = 2005
group by
  categoria,
  cliente
order by
  categoria,
  cliente
com esses dados, basta você montar o relatório


GOSTEI 0
Robotpost

Robotpost

16/05/2006

Muito bom, ficou perfeito.

Obrigado Emerson.

Abraço,

Fernando


GOSTEI 0
Robotpost

Robotpost

16/05/2006

Oi pessoal,

Bom, mostrei o relatório para o cliente, que ficou satisfeito, mas me jogou a seguinte questão?

Tem como os meses serem dinâmicos?
Ou seja:
Ele quer poder escolher os meses e anos que quer no relatório, e não que o relatório seja estático.
Exemplo: Um relatório de 01/04/2001 a 01/04/2002.
Neste caso, o relatório que o Emerson me indicou(que por sinal ficou perfeito), não serviria mais, porque o cliente não conseguiria alimentá-lo, de forma que ele traga as colunas de Abril/2001 a Abril/2002, ou Setembro/2003 a Maio/2004, deu pra entender?

É isso, espero que consigam me ajudar.

Agradeço novamente a atenção.

Abraços!
Fernando


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

16/05/2006

nesse caso seria necessário criar uma stored procedure.


GOSTEI 0
Robotpost

Robotpost

16/05/2006

Emerson,

Vc tem algum modelo de Stored Procedure que faça isso?
Por mais que eu pense, não consegui criar algo que faça isso dinamicamente...

Abraços e obrigado.

Fernando


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

16/05/2006

e isso seria listado sempre em colunas?

por exemplo:
01/04/2001 a 01/04/2002

sairia:
cliente 01/2001 02/2001 03/2001 [...] 11/2001 12/2001 01/2002 02/2002 03/2002 04/2002

ou:
cliente 01/2001 02/2001 03/2001 [...] 11/2001 12/2001

cliente 01/2002 02/2002 03/2002 04/2002
(ou seja, agrupado por ano)

?


GOSTEI 0
Robotpost

Robotpost

16/05/2006

Emerson, seria desta forma:

----------01/2001 02/2001 03/2001 [...] 11/2001 12/2001 01/2002 02/2002
Cliente1
Cliente2
Cliente3
Cliente4

Ou agrupado por categoria também, daquela forma que vc me explicou lembra?

Espero ter sido claro.
Abraço,
Fernando


GOSTEI 0
Robotpost

Robotpost

16/05/2006

sobe


GOSTEI 0
Robotpost

Robotpost

16/05/2006

sobe


GOSTEI 0
Robotpost

Robotpost

16/05/2006

sobe de novo!!!!!!!!!!!


GOSTEI 0
Robotpost

Robotpost

16/05/2006

outra vez.....


GOSTEI 0
Robotpost

Robotpost

16/05/2006

sobe!!!
pessoal, alguém teria alguma outra solução para este meu problema??


GOSTEI 0
Robotpost

Robotpost

16/05/2006

again... :cry:


GOSTEI 0
POSTAR