Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Intercambiar filas en Oracle

Estas en el tema de Intercambiar filas en Oracle en el foro de Oracle en Foros del Web. Buenas. Tengo una duda, no sé si esto se puede hacer en un solo UPDATE sin tener que usar DECODE o CASE. Imaginemos que tengo ...
  #1 (permalink)  
Antiguo 23/04/2013, 10:44
 
Fecha de Ingreso: abril-2004
Mensajes: 107
Antigüedad: 20 años, 6 meses
Puntos: 0
Intercambiar filas en Oracle

Buenas.

Tengo una duda, no sé si esto se puede hacer en un solo UPDATE sin tener que usar DECODE o CASE. Imaginemos que tengo esta tabla, de nombre PERSONAS

DNI ----- EDAD ----- GRUPO

1111 ------30 ------ grupo1
6532 ------27 ------ grupo2
3421 ------24 ------ grupo1
9123 ------19 ------ grupo3



Mi intención es que a las personas con grupo1 se le asigne el grupo2 y, por el contrario, a las personas del grupo2 se les asigne el grupo1 ¿Es posible?

Gracias.
  #2 (permalink)  
Antiguo 23/04/2013, 10:48
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Intercambiar filas en Oracle

Con un codigo intermedio que te guarde temporalmente los resultados

Código SQL:
Ver original
  1. 1. UPDATE tabla SET grupo='grupo99' WHERE grupo='grupo1';
  2. 2. UPDATE tabla SET grupo='grupo1' WHERE grupo='grupo2';
  3. 3. UPDATE tabla SET grupo='grupo2' WHERE grupo='grupo99';
Verifica antes de hacer commit.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 23/04/2013, 10:55
 
Fecha de Ingreso: abril-2004
Mensajes: 107
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Intercambiar filas en Oracle

Cita:
Iniciado por huesos52 Ver Mensaje
Con un codigo intermedio que te guarde temporalmente los resultados

Código SQL:
Ver original
  1. 1. UPDATE tabla SET grupo='grupo99' WHERE grupo='grupo1';
  2. 2. UPDATE tabla SET grupo='grupo1' WHERE grupo='grupo2';
  3. 3. UPDATE tabla SET grupo='grupo2' WHERE grupo='grupo99';
Verifica antes de hacer commit.
Sí, eso lo había pensado ya, además como "grupo" referencia a otra tabla, pues deshabilitar temporalmente la FK a dicha tabla, hacerlo, y volver a habilitarla.

Aunque con esto, si después quiero hacer un Rollback, no podría volver al estado inicial, creo, ya que ahí oracle haría un Commit implícito despues de cada sentencia correcta.
  #4 (permalink)  
Antiguo 23/04/2013, 10:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Intercambiar filas en Oracle

Yo lo haría con un SP...

¿Es absolutamente necesario hacerlo con consultas, o tienes acceso a ejecutar PL/SQL?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 23/04/2013, 11:00
 
Fecha de Ingreso: abril-2004
Mensajes: 107
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Intercambiar filas en Oracle

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Yo lo haría con un SP...

¿Es absolutamente necesario hacerlo con consultas, o tienes acceso a ejecutar PL/SQL?
Gracias gracias, pero no puedo usar eso. Creo que eligiré la opción anterior, es la única que veo factible después de haberlo pensando, con esas restricciones.

PD: Sí, solo con consultas de lenguaje de modificación de datos

Etiquetas: filas, intercambiar, tabla, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:06.