Pessoal, os dba´s sempre fala que no filtro quando tem a clausula OR deixa lento. Nesse caso testo se data dt_confirmacao_documento for null ele busca pela data gar.dt_vencimento como fazer isso sem usar o OR
Muito obrigado select count(distinct mov.numero_venda) qtd ,sum(gar.saldo_devedor) total_saldo ,loj.unidade_servico from crd.empresa loj ,crd.cliente cli ,crd.vendas gar ,crd.pedido mov where loj.regional LIKE DECODE(p_regional, '0', '%','%' || p_regional || '%') and loj.filial LIKE DECODE(p_filial, '0', '%','%' || p_filial || '%') and loj.escritorio = p_escritorio and loj.grupo = p_cliente and loj.regional <> 'T0' and loj.filial <> 'T0' and loj.identificacao = '1' and loj.empresa = cli.empresa_origem and cli.cliente = gar.cliente and cli.empresa = gar.empresa and gar.flg_garantia = 'P' and (((dt_confirmacao_documento is not null) and trunc(dt_confirmacao_documento) >= p_primeiro_dia) or ((dt_confirmacao_documento is null) and trunc(gar.dt_vencimento) >= p_primeiro_dia)) and (((dt_confirmacao_documento is not null) and trunc(dt_confirmacao_documento) <= p_ultimo_dia) or ((dt_confirmacao_documento is null) and trunc(gar.dt_vencimento) <= p_ultimo_dia)) and gar.numero_venda = mov.numero_venda and mov.operacao = '01' and mov.produto LIKE DECODE(p_produto, '0', '%','%' || p_produto || '%') and mov.loja_empresa = loj.empresa and mov.loja_central = loj.central and mov.loja_loja = loj.loja --and (loj.fim_atividade is null or gar.dt_vencimento < loj.fim_atividade) group by loj.unidade_servico order by loj.unidade_servico Elcio Francisco [As partes desta mensagem que não continham texto foram removidas]