Bom, ficou falando uma ligação, infelizmente no oracle não da pra fazer INNER JOIN no UPDATE, apenas no SELECT. Então voltamos para o EXISTS. Agora com todas as ligações.
SELECT *
FROM FAT_MOVIMENTO_ITEM A
WHERE A.ITEM_ESTOQUE = 31025
AND EXISTS (
select 1
from fat_movimento_capa C
where C.Serie_Nota_Fiscal = A.Serie_Nota_Fiscal
and C.NUMERO_NOTA_FISCAL = A.Numero_Nota_Fiscal
C.dta_entrada_saida between to_date('12/08/2013','dd/mm/yyyy')
and to_date('12/08/2013','dd/mm/yyyy')
and C.Status = 'F'
and C.revenda = 1
and C.Tipo_Transacao = 'P01'
)
update FAT_MOVIMENTO_ITEM A
set A.Base_Pis = 0
WHERE A.ITEM_ESTOQUE = 31025
AND EXISTS (
select 1
from fat_movimento_capa C
where C.Serie_Nota_Fiscal = A.Serie_Nota_Fiscal
and C.NUMERO_NOTA_FISCAL = A.Numero_Nota_Fiscal
C.dta_entrada_saida between to_date('12/08/2013','dd/mm/yyyy')
and to_date('12/08/2013','dd/mm/yyyy')
and C.Status = 'F'
and C.revenda = 1
and C.Tipo_Transacao = 'P01'
)