Ir para conteúdo

POWERED BY:

Arquivado

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

guilhermecr

Group BY depois de um UNION ALL ?

Recommended Posts

É possível fazer um 'group by' com o resultado de um 'union all' de duas queries?

só to conseguindo fazer um 'group by' parcial em cada uma das queries.

O código é esse ai

 

SELECT 	processos.id_geral, processos.processo_id, processos.data,			oficios.oficio_nome, nucleos.descricao AS Nucleo,			materia.descricao AS Materia, tipos_movimentacao.descricao AS Situacao		FROM 	((processos LEFT OUTER JOIN processo_x_proc_judicial ON processos.id_geral = processo_x_proc_judicial.fk_processo)			LEFT OUTER JOIN proc_judicial ON processo_x_proc_judicial.fk_proc_judicial = proc_judicial.proc_judicial_id)			,oficios, nucleos, materia, tipos_movimentacao, processo_x_pessoa,pessoas		WHERE 	processos.fk_oficio = oficios.oficio_id 			AND processos.fk_nucleo = nucleos.nucleo_id 			AND processos.fk_materia = materia.materia_id			AND processos.fk_movimentacao_atual = tipos_movimentacao.movimentacao_id			AND processos.id_geral = processo_x_pessoa.fk_processo			AND processo_x_pessoa.fk_pessoa = pessoas.pessoa_id			AND processo_x_pessoa.papel_pessoa = 1			AND processos.fk_nucleo = 1			#TRIM(PreserveSingleQuotes(pessoa_where))#			GROUP BY id_geral,processo_id,oficio_nome,nucleos.descricao,materia.descricao,tipos_movimentacao.descricao,processos.data		UNION ALL		SELECT 	processos.id_geral, processos.processo_id, processos.data,			oficios.oficio_nome, nucleos.descricao AS Nucleo,			materia.descricao AS Materia, tipos_movimentacao.descricao AS Situacao	FROM 	((processos LEFT OUTER JOIN processo_x_proc_judicial ON processos.id_geral = processo_x_proc_judicial.fk_processo)			LEFT OUTER JOIN proc_judicial ON processo_x_proc_judicial.fk_proc_judicial = proc_judicial.proc_judicial_id),			oficios, nucleos, materia, tipos_movimentacao,processo_x_empresa,empresas		WHERE 	processos.fk_oficio = oficios.oficio_id 			AND processos.fk_nucleo = nucleos.nucleo_id 			AND processos.fk_materia = materia.materia_id			AND processos.fk_movimentacao_atual = tipos_movimentacao.movimentacao_id			AND processos.id_geral = processo_x_empresa.fk_processo			AND processo_x_empresa.fk_empresa = empresas.empresa_id			#TRIM(PreserveSingleQuotes(empresa_where))#			GROUP BY id_geral,processo_id,oficio_nome,nucleos.descricao,materia.descricao,tipos_movimentacao.descricao,processos.data	ORDER BY processos.processo_id

Será que alguem tem alguma idéia.

 

Desde já obrigado,

Guilherme

Compartilhar este post


Link para o post
Compartilhar em outros sites

nunca tentei, qq. coisa como opção seria jogar o resultado dos dois selects numa tabela virtual e fazer o group by tranquilamente nesta tabela virtual

 

ficaria +ou- assim:

--declarando a tabela virtualdeclare @tabVirtual (id_geral varchar(10), processo_id varchar(10), data varchar(30), oficio_nome varchar(50), Nucleo varchar(50), Materia varchar(50), Situacao varchar(50))--inserindo os dados na tabela virtual pela 1º consultainsert into @tabVirtual (id_geral, processo_id, data, oficio_nome, Nucleo, Materia, Situacao)SELECT	 processos.id_geral, processos.processo_id, processos.data,			oficios.oficio_nome, nucleos.descricao AS Nucleo,			materia.descricao AS Materia, tipos_movimentacao.descricao AS Situacao		FROM	 ((processos LEFT OUTER JOIN processo_x_proc_judicial ON processos.id_geral = processo_x_proc_judicial.fk_processo)			LEFT OUTER JOIN proc_judicial ON processo_x_proc_judicial.fk_proc_judicial = proc_judicial.proc_judicial_id)			,oficios, nucleos, materia, tipos_movimentacao, processo_x_pessoa,pessoas		WHERE	 processos.fk_oficio = oficios.oficio_id 			AND processos.fk_nucleo = nucleos.nucleo_id 			AND processos.fk_materia = materia.materia_id			AND processos.fk_movimentacao_atual = tipos_movimentacao.movimentacao_id			AND processos.id_geral = processo_x_pessoa.fk_processo			AND processo_x_pessoa.fk_pessoa = pessoas.pessoa_id			AND processo_x_pessoa.papel_pessoa = 1			AND processos.fk_nucleo = 1			#TRIM(PreserveSingleQuotes(pessoa_where))#			GROUP BY id_geral,processo_id,oficio_nome,nucleos.descricao,materia.descricao,tipos_movimentacao.descricao,processos.data--inserindo os dados na tabela virtual pela 2º consulta	insert into @tabVirtual (id_geral, processo_id, data, oficio_nome, Nucleo, Materia, Situacao)		SELECT	 processos.id_geral, processos.processo_id, processos.data,			oficios.oficio_nome, nucleos.descricao AS Nucleo,			materia.descricao AS Materia, tipos_movimentacao.descricao AS Situacao	FROM	 ((processos LEFT OUTER JOIN processo_x_proc_judicial ON processos.id_geral = processo_x_proc_judicial.fk_processo)			LEFT OUTER JOIN proc_judicial ON processo_x_proc_judicial.fk_proc_judicial = proc_judicial.proc_judicial_id),			oficios, nucleos, materia, tipos_movimentacao,processo_x_empresa,empresas		WHERE	 processos.fk_oficio = oficios.oficio_id 			AND processos.fk_nucleo = nucleos.nucleo_id 			AND processos.fk_materia = materia.materia_id			AND processos.fk_movimentacao_atual = tipos_movimentacao.movimentacao_id			AND processos.id_geral = processo_x_empresa.fk_processo			AND processo_x_empresa.fk_empresa = empresas.empresa_id			#TRIM(PreserveSingleQuotes(empresa_where))#			GROUP BY id_geral,processo_id,oficio_nome,nucleos.descricao,materia.descricao,tipos_movimentacao.descricao,processos.data	ORDER BY processos.processo_id   --realizando o select na tabela virtual com o group by select id_geral, processo_id, data, oficio_nome, nucleo, materia, situacao from @tabVirtual GROUP BY id_geral,processo_id,oficio_nome,nucleo,materia,situacao,data

bom fds

t+

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.