Bom dia galera, estou usando o Banco de Dados Firebird para realizar uma busca sendo que nessa busca eu preciso agrupar pelo campo APROVACAO_POSVENDA então criei o seguinte SQL inicialmente:
String sql = "SELECT p.APROVACAO_POSVENDA, p.DATAPED, "
+ "Count(p.APROVACAO_POSVENDA) as CONTADOR, " //busco o contador de registros agrupados
+"SUM(p.PV_P1)/COUNT(p.APROVACAO_POSVENDA) as MEDIA " //calculo uma média simples
+"FROM PEDIDO p WHERE p.APROVACAO_POSVENDA='S' " //condição simples
+"GROUP BY p.APROVACAO_POSVENDA"; //Isso funciona em outros bancos mas com Firebird não
ai o seguinte erro ocorre
[color=darkred]org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544569. Dynamic SQL Error
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
at org.firebirdsql.jdbc.AbstractStatement.executeQuery(AbstractStatement.java:224)
at br.com.persistencia.PedidoDAO.getMediaPedido(PedidoDAO.java:43)
at testes.Teste.main(Teste.java:15)
[/color]
Pesquisei sobre esse erro e encontrei um usuário falando que deveria adicionar os campos que estão sendo buscados no Group by e então eu alterei ficando dessa forma:
String sql = "SELECT p.APROVACAO_POSVENDA, p.DATAPED, "
+ "Count(p.APROVACAO_POSVENDA) as CONTADOR, " //busco o contador de registros agrupados
+"SUM(p.PV_P1)/COUNT(p.APROVACAO_POSVENDA) as MEDIA " //calculo uma média simples
+"FROM PEDIDO p WHERE p.APROVACAO_POSVENDA='S' " //condição simples
+"GROUP BY p.APROVACAO_POSVENDA, p.DATAPED "; //Novo Group By que não agrupa nada
Achei meio estranho porque só quero agrupar o campo APROVACAO_POSVENDA porém adicionei o campo DATAPED também que sempre será diferente um do outro. Agora não acontece mais erro mais os dados não são agrupados me retornando uma listagem com todos os objetos referente a pesquisa. Alguém sabe como posso resolver isso?