Subquery no having ou outra coisa?
Bom, eu tenho uma SP que faz algumas contas e mostra alguns números, nada demais... O problema é que a tbHistory tem vários eventos onde o amount_pay está vazio. Atualmente a SP tá contabilizando esses eventos vazios pra fazer as contagens.
Eu até fiz um teste trocando (AVG(H.amount_pay) <> 0) por H.amount_pay is not null mas acontece que eu teria que colocar o H.amount_pay no GROUP BY e isso é algo que eu não quero pois destruiria o relatório. Existe alguma coisa que eu possa fazer, uma subquery ou qualquer outra coisa para que essa SP faça todos esses cálculos ignorando os amount_pay que estão nulos??
Eis a problemática:
SELECT ACB.id_action, A.new_id_action, A.proposition, A.sub_data_type, A.drop_date, A.end_date, A.circulation, D.title_dict as type_don, (COUNT(H.id_customer) / A.circulation) AS resp_rate, COUNT(H.id_customer) as num_gifts, COUNT(DISTINCT H.id_customer) as num_givers, SUM(H.amount_pay) AS sum_donation, (SUM(H.amount_pay) / COUNT(H.id_customer)) as avg_gift FROM tbHistory AS H INNER JOIN tbActionsCB AS ACB ON H.id_action = ACB.id_action INNER JOIN tbActions AS A ON H.id_action = A.id_action INNER JOIN tbDict AS D ON ACB.type_don = D.id GROUP BY ACB.id_action, A.new_id_action, A.proposition, ACB.type_don, A.sub_data_type, A.drop_date, A.end_date, A.circulation, D.title_dict, H.del, A.year_month, ACB.data_type, ACB.channel HAVING (H.del = 0) AND (AVG(H.amount_pay) <> 0) AND (@new_id_action is null OR A.new_id_action = @new_id_action) ORDER BY ACB.id_actionAh, só pra se ter uma idéia: Eu puxei um relatório usando essa SP e ela me mostrou que a média do amount_pay é de 0,025 reais(!) o que está completamente errado. http://forum.imasters.com.br/public/style_emoticons/default/upset.gif
Discussão (2)
Carregando comentários...