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.