ajuda com update
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'
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
Curtidas 0
Respostas
Alex Lekao
16/01/2013
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
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
GOSTEI 0
Bruno Leandro
16/01/2013
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
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
GOSTEI 0
Victor Pavia
16/01/2013
Fala Bruno. É isso mesmo cara. Deu certinho. Eu não me toquei disso. Mas ta certinho.
Valeu mesmo...
Valeu mesmo...
GOSTEI 0
José
16/01/2013
Victor obrigado por confirmar a solução, sendo assim estou dando o tópico por concluído,
GOSTEI 0