Marco Dias
não registrado
|
|
Postada em 07/05/2004 14:01 hs
Boa tarde amigos eu tenho um banco de dados em sybase, tenho uma coluna chamada op(ordem de pagamento) por erro no meu código duplicou 417 ops, com este select: select pf1.filial, pf1.cgc_cliente, pf1.contrato, pf1.dt_movto, pf1.op from processo_financeiro pf1, processo_financeiro pf2 where pf1.op = pf2.op and pf1.dt_movto < pf2.dt_movto Consigo selecionar as duplicadas que são as q tem a data de movimento mais antigas, mas eu gostaria de dar um update no primeiro digito destas q começam com 2 para 1 e fiz: update processo_financeiro set op = '1'||substr(op,2,7) where (filial,cgc_cliente,contrato,dt_movto,op) = (select pf1.filial, pf1.cgc_cliente, pf1.contrato, pf1.dt_movto, pf1.op from processo_financeiro pf1, processo_financeiro pf2 where pf1.op = pf2.op and pf1.dt_movto < pf2.dt_movto) Só que o sybase diz que tem um erro perto da da vírgula (,) mas não diz onde alguem pode me ajudar. Ufa!!!!!!
|
|
|
|
|
|
|
|
Postada em 07/05/2004 17:33 hs
A parte em negrito não tem sentido algum em SQL ANSI: update processo_financeiro set op = '1'||substr(op,2,7) where (filial,cgc_cliente,contrato,dt_movto,op) = (select pf1.filial, pf1.cgc_cliente, pf1.contrato, pf1.dt_movto, pf1.op from processo_financeiro pf1, processo_financeiro pf2 where pf1.op = pf2.op and pf1.dt_movto < pf2.dt_movto)
Tente isso: update processo_financeiro upf set op = '1'||substr(op,2,7) where EXISTS ( select pf1.filial, pf1.cgc_cliente, pf1.contrato, pf1.dt_movto, pf1.op from processo_financeiro pf1, processo_financeiro pf2 where pf1.op = pf2.op and pf1.dt_movto < pf2.dt_movto AND ( upf.filial = pf1.filial AND upf.cgc_cliente = pf1.cgc_cliente AND upf.contrato = pf1.contrato AND upf.dt_movto = pf1.dt_movto AND upf.op = pf1.op ) )
|
|
|
|
|