sql >> Base de Datos >  >> RDS >> Sqlserver

Insertar y transformar datos de una tabla SQL

No hay necesidad de un WHILE bucle.

SELECT
    date,
    id,
    SUM(CASE WHEN status_id = 1 THEN status_time ELSE 0 END) AS lunch,
    SUM(CASE WHEN status_id = 2 THEN status_time ELSE 0 END) AS break,
    SUM(CASE WHEN status_id = 3 THEN status_time ELSE 0 END) AS vacation
FROM
    My_Table
GROUP BY
    date,
    id

Además, manteniendo el status_time en la tabla es un error (a menos que sea una columna calculada no persistente). Está almacenando efectivamente los mismos datos en dos lugares en la base de datos, lo que terminará generando inconsistencias. Lo mismo ocurre con la inserción de estos datos en otra tabla con tiempos desglosados ​​por tipo de estado. No cree una nueva tabla para almacenar los datos, utilice la consulta para obtener los datos cuando los necesite.