Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Gonçalves

Relátório comparativo

Recommended Posts

Bom dia, pessoal.

 

Estou com dificuldade aqui para montar um relatório que compara dois períodos informado pelo usuário, talvez vocês possam me ajudar.

 

Como informei acima, preciso pegar dois períodos (4 datas) informado pelo usuário e montar o relatório e comparar os dois períodos. Quanto a comparação e exibição do resultado isso é tranquilo, já na montagem da SQL que eu não sei se devo realizar dois SELECTS (um para o primeiro período e outro para o segundo período), ou se tem como fazer um SELECT só.

 

 

Caso alguém possa ajudar, eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a estrutura das tabelas? O que deve ser mostrado? Qual o banco de dados? Como irá agrupar os dados dos dois períodos para exibir no comparativo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a estrutura das tabelas? O que deve ser mostrado? Qual o banco de dados? Como irá agrupar os dados dos dois períodos para exibir no comparativo?

O banco de dados é o MySQL;

----------------------------------

Estrutura da tabela "Movimentacao":

Entrada:float;

Saida:float;

id_grupo:int;

grupo:varchar(20);

id_categoria:int;

categoria:varchar(20);

id_subcategoria:int;

subcategoria:varchar(20);

data:date;

Descricao:varchar(30);

---------------------------------

Devo agrupar por grupo,categoria e subcategoria os registros financeiros.

 

Devo exibir em um relatório (QReport) o resultado do primeiro período e abaixo, o resultado do segundo período conforme o agrupamento que informei. Mas o resultado mostrará apenas os valores do somatório de cada um.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, não uso muito MySql, mas se fosse no SQL Server faria algo do tipo abaixo:

 

create table #movimentacao (	
entrada			numeric(14,2),
saida			numeric(14,2),
id_grupo		int,
grupo			char(20),
id_categoria	int,
categoria		char(20),
id_subcategoria	int,
subcategoria	char(20),
data			datetime,
Descricao		char(30)
)
go

insert	into #movimentacao
select	20,
	0,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria A',
	'20111001',
	'Entrada Item A'
union
select	0,
	20,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria A',
	'20111001',
	'Saída Item A'
union
select	0,
	20,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria B',
	'20111011',
	'Saída Item B'
union
select	20,
	0,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria A',
	'20111101',
	'Entrada Item A'
union
select	0,
	20,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria A',
	'20111101',
	'Saída Item A'
union
select	0,
	20,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria B',
	'20111111',
	'Saída Item B'
union
select	20,
	0,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria A',
	'20111001',
	'Entrada Item A'
union
select	0,
	20,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria A',
	'20111001',
	'Saída Item A'
union
select	0,
	20,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria B',
	'20111011',
	'Saída Item B'
union
select	20,
	0,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria A',
	'20111101',
	'Entrada Item A'
union
select	0,
	20,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria A',
	'20111101',
	'Saída Item A'
union
select	0,
	20,
	1,
	'Grupo A',
	1,
	'Categoria A',
	1,
	'Subcategoria B',
	'20111111',
	'Saída Item B'

go

select data, *
from #movimentacao
order by data

select	1	as 'Periodo',
	id_grupo,
	grupo,
	id_categoria,
	categoria,
	id_subcategoria,
	subcategoria,
	Descricao,
	sum(entrada) as entradas,
	sum(saida)	as saidas
from	#movimentacao
where	data between '20111001 00:00:00' and '20111031 23:59:59'
group 	by	id_grupo,
	grupo,
	id_categoria,
	categoria,
	id_subcategoria,
	subcategoria,
	Descricao
union
select	2	as 'Periodo',
	id_grupo,
	grupo,
	id_categoria,
	categoria,
	id_subcategoria,
	subcategoria,
	Descricao,
	sum(entrada) as entradas,
	sum(saida)	as saidas
from	#movimentacao
where	data between '20111101 00:00:00' and '20111130 23:59:59'
group 	by	id_grupo,
	grupo,
	id_categoria,
	categoria,
	id_subcategoria,
	subcategoria,
	Descricao

 

Ai seria questão só de por os order by nas duas selects e a quebra pelo período eu acredito para resolver seu problema. Tente ai e qualquer coisa retorne.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.