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
. को ध्यान में रखते हुए तालिका में एक गलती है (जब तक कि यह एक गैर-निरंतर, परिकलित स्तंभ न हो)। आप डेटाबेस में एक ही डेटा को दो स्थानों पर प्रभावी रूप से संग्रहीत कर रहे हैं, जिसके परिणामस्वरूप विसंगतियां समाप्त हो जाएंगी। स्थिति प्रकार के आधार पर विभाजित समय के साथ इस डेटा को किसी अन्य तालिका में धकेलने के लिए भी यही होता है। डेटा को होल्ड करने के लिए कोई नई तालिका न बनाएं, आवश्यकता पड़ने पर डेटा प्राप्त करने के लिए क्वेरी का उपयोग करें।