Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Inserindo e transformando dados da tabela SQL


Não há necessidade de um WHILE ciclo.
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

Além disso, manter o status_time na tabela é um erro (a menos que seja uma coluna calculada não persistente). Você está efetivamente armazenando os mesmos dados em dois lugares no banco de dados, o que acabará resultando em inconsistências. O mesmo vale para enviar esses dados para outra tabela com horários divididos por tipo de status. Não crie uma nova tabela para armazenar os dados, use a consulta para obter os dados quando precisar.