यदि आप MySQL 8+ का उपयोग कर रहे हैं, तो हम इसे ROW_NUMBER
. का उपयोग करके संभाल सकते हैं :
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Date ORDER BY Time) rn
FROM attendancedata
WHERE EnrolledID = 23
)
SELECT
Date,
MAX(CASE WHEN rn = 1 THEN Time END) AS PO1,
MAX(CASE WHEN rn = 2 THEN Time END) AS PO2,
MAX(CASE WHEN rn = 3 THEN Time END) AS PO3,
MAX(CASE WHEN rn = 4 THEN Time END) AS PO4,
MAX(CASE WHEN rn = 5 THEN Time END) AS PO5,
MAX(CASE WHEN rn = 6 THEN Time END) AS PO6,
MAX(CASE WHEN rn = 7 THEN Time END) AS PO7
FROM cte
GROUP BY
Date
ORDER BY
Date;
लेकिन ध्यान दें कि सामान्य तौर पर दिनांक और समय को एक datetime
में संग्रहित करना वांछनीय है MySQL के साथ फ़ील्ड। इस विशेष मामले में, इसने अच्छा काम किया, लेकिन यह हमेशा सच नहीं हो सकता है।