Foro oficial de SQL

MædCo

@MaEdCo
Se unió
12 May 2007
Mensajes
8,257
Pruebe quitandole los separadores ( - ) a las fechas en la consulta y si no le sirve quitele los CONVERT y con las fechas como le digo sin separadores '20200101'. Saludos.
gracias la solución fue encerrar en paréntesis el where y el and de la fecha
 

MædCo

@MaEdCo
Se unió
12 May 2007
Mensajes
8,257
Hola

Necesito ayuda con un UPDATE

Tengo una tabla que la llamaré PlanoMedicamentos, algunos campos relevantes:

TipoRegistroConsecutivoTipoIdenIdentificacion...CodigoMedicamento...

el CodigoMedicamento algunos vienen mal y tengo que homologarlo con una tabla de INVIMA y haciendo otros cruces adicionales para buscar en el "sistema de información" de la empresa a cual código exactamente se refiere de acuerdo al INVIMA y me da esta tabla, (CUM= CodigoUnicoMedicamento)

CUMSfix

CodigoMedicamentoCUMCorregido

cual sería la forma para corregir los Códigos de Medicamentos en PlanoMedicamentos ?

forma1:

SQL:
update PlanoMedicamentos

set CodigoMedicamento=b.CUMCorregido

from PlanoMedicamentos a

inner join CUMSfix b on (a.CodigoMedicamento=b.CodigoMedicamento)
forma2:
SQL:
ALTER TABLE PlanoMedicamentos ADD CUMCorregido VARCHAR(20)



update PlanoMedicamentos

set CUMCorregido=CodigoMedicamento

from PlanoMedicamentos





update PlanoMedicamentos

set CUMCorregido=b.CUMCorregido

from PlanoMedicamentos a

inner join CUMSfix b on (a.CodigoMedicamento=b.CodigoMedicamento)

siento que algo no estoy haciendo bien:X3:... espero me puedan hacer el favor de colaborar...
 

_Fabian_

Lanero Reconocido
Se unió
15 May 2009
Mensajes
49
Hola

Necesito ayuda con un UPDATE

Tengo una tabla que la llamaré PlanoMedicamentos, algunos campos relevantes:

TipoRegistroConsecutivoTipoIdenIdentificacion...CodigoMedicamento...

el CodigoMedicamento algunos vienen mal y tengo que homologarlo con una tabla de INVIMA y haciendo otros cruces adicionales para buscar en el "sistema de información" de la empresa a cual código exactamente se refiere de acuerdo al INVIMA y me da esta tabla, (CUM= CodigoUnicoMedicamento)

CUMSfix

CodigoMedicamentoCUMCorregido

cual sería la forma para corregir los Códigos de Medicamentos en PlanoMedicamentos ?

forma1:

SQL:
update PlanoMedicamentos

set CodigoMedicamento=b.CUMCorregido

from PlanoMedicamentos a

inner join CUMSfix b on (a.CodigoMedicamento=b.CodigoMedicamento)
forma2:
SQL:
ALTER TABLE PlanoMedicamentos ADD CUMCorregido VARCHAR(20)



update PlanoMedicamentos

set CUMCorregido=CodigoMedicamento

from PlanoMedicamentos





update PlanoMedicamentos

set CUMCorregido=b.CUMCorregido

from PlanoMedicamentos a

inner join CUMSfix b on (a.CodigoMedicamento=b.CodigoMedicamento)

siento que algo no estoy haciendo bien:X3:... espero me puedan hacer el favor de colaborar...
Hola

Si es MySql sería algo así (no recuerdo si también lo probé en Oracle y/o Postgres)

SQL:
update PlanoMedicamentos a, CUMSfix b
    set a.CUMCorregido = b.CUMCorregido
    where a.CodigoMedicamento=b.CodigoMedicamento;
 

MædCo

@MaEdCo
Se unió
12 May 2007
Mensajes
8,257
Hola

Si es MySql sería algo así (no recuerdo si también lo probé en Oracle y/o Postgres)

SQL:
update PlanoMedicamentos a, CUMSfix b
    set a.CUMCorregido = b.CUMCorregido
    where a.CodigoMedicamento=b.CodigoMedicamento;
si, así esa es la primera opción pero algo esta mal por que la ejecute dos veces por error , y la primera vez apareció XXXX registros actualizados, la segunda vez que se ejecuta según mi lógica no debería aparecer nada es decir 0(cero) registros actualizados mas sin embargo siguen apareciendo, y por eso es mi duda...
 

johansan

Lanero Reconocido
Se unió
30 Ene 2004
Mensajes
3,958
si, así esa es la primera opción pero algo esta mal por que la ejecute dos veces por error , y la primera vez apareció XXXX registros actualizados, la segunda vez que se ejecuta según mi lógica no debería aparecer nada es decir 0(cero) registros actualizados mas sin embargo siguen apareciendo, y por eso es mi duda...
Es porque no le estás indicando buenos filtros.
Solamente buscas que exista el código, si es así, lo reemplaza, pero si ya estaba correcto, igual lo vuelve a hacer.
Agrega la sentencia para que solo aplique cuando el campo CodigoMedicamento sea diferente a CUMCorregido.

Algunos motores no permiten realizar UPDATE cuando está realizando JOIN y toca hacerlo por Subquery u otros métodos.

Proba con este.
SQL:
update PlanoMedicamentos
set CodigoMedicamento=b.CUMCorregido
from PlanoMedicamentos a
inner join CUMSfix b on (a.CodigoMedicamento=b.CodigoMedicamento
AND a.CodigoMedicamento<>b.CUMCorregido)
 
Arriba