Der er ikke behov for en WHILE
løkke.
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
Bevar også status_time
i tabellen er en fejl (medmindre det er en ikke-vedvarende, beregnet kolonne). Du gemmer effektivt de samme data to steder i databasen, hvilket vil ende med at resultere i uoverensstemmelser. Det samme gælder for at skubbe disse data ind i en anden tabel med tider opdelt efter statustype. Opret ikke en ny tabel til at opbevare dataene, brug forespørgslen til at hente dataene, når du har brug for dem.