Er is geen WHILE
nodig lus.
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
Houd ook de status_time
in de tabel is een fout (tenzij het een niet-persistente, berekende kolom is). U slaat in feite dezelfde gegevens op twee plaatsen in de database op, wat uiteindelijk tot inconsistenties zal leiden. Hetzelfde geldt voor het pushen van deze gegevens naar een andere tabel met tijden uitgesplitst naar statustype. Maak geen nieuwe tabel om de gegevens op te slaan, gebruik de query om de gegevens op te halen wanneer u ze nodig hebt.