WHILE
は必要ありません ループ。
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
また、status_time
を保持します 表にあるのは間違いです(非永続的な計算列でない限り)。同じデータをデータベースの2つの場所に効果的に保存しているため、結果として不整合が発生します。同じことが、このデータを別のテーブルにプッシュする場合にも当てはまります。時間はステータスタイプごとに分類されます。データを保持するための新しいテーブルを作成するのではなく、クエリを使用して必要なときにデータを取得してください。