Fala povo...
como fazer "sum if" ou "sum case" ?
eu queria fazer essa consulta com criteria:select cli.codigo, cli.razao_social,
AVG(pe.quantidade) as mediaPecas,
sum(case when pe.status = 'F' then 1 end) as pedidosFaturados,
sum(pe.quantidade_faturada) as quantidadeFaturada,
sum(pe.valor_faturado) as valorFaturado,
AVG(pe.valor_liquido) as mediaValor
from clientes cli
inner join pedido pe on pe.cliente = cli.codigo
where pe.data_emissao BETWEEN '01/01/2009' AND '31/10/2009'
GROUP BY cli.codigo, cli.razao_social
Criteria criteria = ComandoUtil.getSession(schema).createCriteria(Pedido.class);
criteria.add(Restrictions.between("dataEmissao", dataInicial, dataFinal));
criteria.createCriteria("cliente", "c");
criteria.add(Restrictions.eq("c.codigo", codigoCliente));
ProjectionList projList = Projections.projectionList();
projList.add(Projections.count("status"));
projList.add(Projections.avg("quantidade"), "mediaPecas");
projList.add(Projections.sum("quantidadeFaturado"));
projList.add(Projections.sum("valorFaturado"));
projList.add(Projections.avg("valorLiquido"), "mediaValor");
criteria.setProjection(projList);
como fazer? ou vcs tem uma opção melhor?