ajuda com update

16/01/2013

0

Pessoal,

Tenho esta query que me retorna 281 registros.
Abaixo faço um update de acordo com essa consulta.
Ao fazer o update só atualiza 238. Se alguém tiver alguma idéia... eu agradeço muito.

select tm.numeromov,tm.dataemissao,tm.IDMOV,ttm.NSEQITMMOV,tp.CODIGOREDUZIDO,tp.DESCRICAO,ttmf.NATREC,tpc.natrec as natrecprod,tpf.SITUACAOMERCADORIA,
tpf.SITTRIBUTARIACOFINS,tpf.SITTRIBUTARIAPIS,tm.CODTMV
from TMOV tm
inner join TITMMOV ttm on (tm.IDMOV = ttm.IDMOV)
inner join tprd tp on (tp.idprd = ttm.idprd)
left join TPRDFISCAL tpf on (tp.IDPRD = tpf.IDPRD)
left join TITMMOVFISCAL ttmf on (ttmf.IDMOV = ttm.IDMOV and ttmf.NSEQITMMOV = ttm.NSEQITMMOV)
left join TPRDCOMPL tpc on (tpc.IDPRD = tp.IDPRD)

where tm.codtmv like ('2.2%') and tm.codtmv not in('2.2.02','2.2.25')

and tpf.SITTRIBUTARIACOFINS in ('04','06','09')
and ((ttmf.natrec is null)or(ttmf.natrec = ''))
and tm.DATAEMISSAO >= '01/12/2012'
and tm.DATAEMISSAO <= '16/01/2013' and tpc.NATREC is not null
order by TM.NUMEROMOV




update ttmf set ttmf.NATREC = tpc.NATREC
from TMOV tm
inner join TITMMOV ttm on (tm.IDMOV = ttm.IDMOV)
inner join tprd tp on (tp.idprd = ttm.idprd)
left join TPRDFISCAL tpf on (tp.IDPRD = tpf.IDPRD)
left join TITMMOVFISCAL ttmf on (ttmf.IDMOV = ttm.IDMOV and ttmf.NSEQITMMOV = ttm.NSEQITMMOV)
left join TPRDCOMPL tpc on (tpc.IDPRD = tp.IDPRD)

where tm.codtmv like '2.2%' and tm.codtmv not in ('2.2.02','2.2.25')

and tpf.SITTRIBUTARIACOFINS in ('04','06','09')
and ((ttmf.natrec is null)or(ttmf.natrec = ''))
and tm.DATAEMISSAO >= '01/12/2012'
and tm.DATAEMISSAO <= '16/01/2013'

Victor Pavia

Victor Pavia

Responder

Posts

16/01/2013

Alex Lekao

Oi, boa tarde!!!

Cara eu não entendi seu script honestamente... mas dando uma olhada entre o select e o update a única coisa que vi que tinha em um e não tinha no outro era isto "and tpc.NATREC is not null" no update.

naso sei se sera isto.

eu normalmente não uso inner join, somente left join, naso sei se isto ajudaria montar diferente poderia influenciar.

espero que ajude.

Abraco.

Alex - Lekao
Responder

16/01/2013

Bruno Leandro

eu mudei a amarração no select de left join para inner na tabela TITMMOVFISCAL, veja quantos registros retornam, se retornar igual ao comando update provavelmente só existe essa quantidade de registros para esse filtro no movimento fiscal, e como ta com left caso nao exista ele tambem ira trazer um registro



select tm.numeromov,tm.dataemissao,tm.IDMOV,ttm.NSEQITMMOV,tp.CODIGOREDUZIDO,tp.DESCRICAO,ttmf.NATREC,tpc.natrec as natrecprod,tpf.SITUACAOMERCADORIA,
tpf.SITTRIBUTARIACOFINS,tpf.SITTRIBUTARIAPIS,tm.CODTMV
from TMOV tm
inner join TITMMOV ttm on (tm.IDMOV = ttm.IDMOV)
inner join tprd tp on (tp.idprd = ttm.idprd)
left join TPRDFISCAL tpf on (tp.IDPRD = tpf.IDPRD)
inner join TITMMOVFISCAL ttmf on (ttmf.IDMOV = ttm.IDMOV and ttmf.NSEQITMMOV = ttm.NSEQITMMOV)
left join TPRDCOMPL tpc on (tpc.IDPRD = tp.IDPRD)

where tm.codtmv like ('2.2%') and tm.codtmv not in('2.2.02','2.2.25')

and tpf.SITTRIBUTARIACOFINS in ('04','06','09')
and ((ttmf.natrec is null)or(ttmf.natrec = ''))
and tm.DATAEMISSAO >= '01/12/2012'
and tm.DATAEMISSAO <= '16/01/2013' and tpc.NATREC is not null
order by TM.NUMEROMOV
Responder

17/01/2013

Victor Pavia

Fala Bruno. É isso mesmo cara. Deu certinho. Eu não me toquei disso. Mas ta certinho.

Valeu mesmo...
Responder

30/07/2013

José

Victor obrigado por confirmar a solução, sendo assim estou dando o tópico por concluído,
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar