SUM(DISTINCT ...) não funciona?

5 respostas
F

Gente, estou executando aqui uma query no Java para retornar alguns valores agrupados por cod_cliente e cod_motivo, porém o java me diz que a um erro no SUM(Distinct ...), o JPA não aceita isso?

Segue o meu código:

@SuppressWarnings("unchecked")
	public ArrayList<Object> findAllMovimentoCobrancaNaFaixa(String cod_gru_empresa,String empresa_min, String empresa_max, Timestamp data_min, Timestamp data_max, String analista_min, String analista_max) {
		Query query=em.createQuery("SELECT max(a.dt_mov_cobranca) as dt_mov_cobranca, a.cod_motivo, b.des_motivo, SUM(DISTINCT d.val_aberto) AS val_aberto "
				+ " FROM MovimentoCobranca a, MotivoAtraso b, Clientes c, AgendaCobranca d"
				+ " WHERE b.cod_gru_empresa = a.cod_gru_empresa and "
				+ " b.cod_motivo = a.cod_motivo and "
				+ " c.cod_gru_empresa = a.cod_gru_empresa and "
				+ " c.cod_cliente = a.cod_cliente and "
				+ " d.cod_gru_empresa = c.cod_gru_empresa and "
				+ " c.cod_cliente = d.cod_cliente and "
				+ " a.cod_cliente = d.cod_cliente "
				+ " and a.cod_gru_empresa = :cod_gru_empresa" 
				+ " and a.cod_empresa >= :empresa_min and a.cod_empresa <= :empresa_max"
				+ " and a.dt_mov_cobranca >= :data_min and a.dt_mov_cobranca <= :data_max"
				+ " and a.cod_usuario >= :analista_min and a.cod_usuario <= :analista_max"
				+ " GROUP BY a.cod_motivo, b.des_motivo");
		query.setParameter("cod_gru_empresa", cod_gru_empresa);
		query.setParameter("empresa_min", empresa_min);
		query.setParameter("empresa_max", empresa_max);
		query.setParameter("data_min", data_min);
		query.setParameter("data_max", data_max);
		query.setParameter("analista_min", analista_min);
		query.setParameter("analista_max", analista_max);

		return (ArrayList<Object>) query.getResultList();
	}

5 Respostas

T

Até aonde eu sei o uso do distinct é select distinct campo, sum(campo) from tabela group by campo

F

Na documentação diz que eu posso usar SUM(Distinct) de boa, testei no SQL e é o unico jeito que me retorna o valor certo.

D

Está usando o que como provider? EclipseLink? TopLinK? ou Hibernate?

F

Hibernate!

D

Estão isso é estranho, porque já fiz isso e funciona, com qualquer um, colocando DISTINCT como fez.
Agora, que erro isso apresenta para você?

Criado 13 de abril de 2010
Ultima resposta 15 de abr. de 2010
Respostas 5
Participantes 3