Ver Mensaje Individual
  #1  
Antiguo 27-11-2021
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Reputación: 20
MAXIUM Va camino a la fama
Insertar datos de un tabla en otra

Hola a todos,

Tengo una consulta SQL que no se como completar y no sé cual sea la mejor opción por lo que recurro a vuestra sapiencia.

Tengo la TABLA_A y en esta se van almacenando los siguientes datos.

TABLA_A

Código:
| ID | NOMBRE |TIPO|ESTADO|
|----|--------|----|------|
|  1 |CABINA1 |  A |ACTIVO|
|  2 |CABINA1 |  B |ACTIVO|
|  3 |CABINA1 |  B | LISTO|
|  4 |CABINA1 |  A |  OK  |
|  5 |CABINA2 |  A | LISTO|
|  6 |CABINA2 |  B |ACTIVO|
|  7 |CABINA2 |  A |  OK  |
|  8 |CABINA2 |  B | LISTO|
No importa el orden de almacenamiento de los datos, solo quiero obtener el ULTIMO estado de cada cabina, por lo que uso la siguiente consulta SQL

Código SQL [-]
SELECT * FROM TABLA_A
WHERE ID IN (SELECT MAX(ID) FROM TABLA_A GROUP BY NOMBRE, TIPO);

Y obtengo
Código:
| ID | NOMBRE |TIPO|ESTADO|
|----|--------|----|------|
|  3 |CABINA1 |  B | LISTO|
|  4 |CABINA1 |  A |  OK  |
|  7 |CABINA2 |  A |  OK  |
|  8 |CABINA2 |  B | LISTO|
Lo que quiero es insertar todo en una segunda tabla, pero del siguiente modo
TABLA_B

Código:
| ID |NOMBRE  |TIPO|ESTADO|TIPO|ESTADO|
|----|--------|----|------|----|------|
|  1 |CABINA1 |  B | LISTO|  A |  OK  |
|  2 |CABINA2 |  A |  OK  |  B | LISTO|
En la TABLA_B la clave primaria es NOMBRE

Solo se me ocurre usar algo así para actualizar o inserta en esta tabla. Pero no se como integrar todo de una sola vez
Código SQL [-]
IF EXISTS(SELECT * FROM TABLA_B WHERE NOMBRE = NOMBRE)
    UPDATE 
    SET ...
    WHERE NOMBRE = NOMBRE
ELSE
    INSERT INTO
    ....

El motor es SQL Server.
Responder Con Cita