group_concat
. का उपयोग करने के संदर्भ प्रश्न के दृष्टिकोण से आप ऐसा कर सकते हैं, लेकिन एक बात ध्यान दें क्योंकि आपकी जॉब आईडी प्रति exec_id
के अनुसार बढ़ती जाती है फिर ग्रुप करें group_concat
1024 वर्णों की डिफ़ॉल्ट लंबाई के कारण दृष्टिकोण इष्टतम नहीं होगा और आपके गतिशील स्तंभों के लिए यह निश्चित रूप से उस सीमा को पार कर जाएगा, लेकिन इस सीमा को बढ़ाया जा सकता है जैसा कि documentation
SET @sql = NULL;
SELECT GROUP_CONCAT(DISTINCT
CONCAT('MAX(CASE WHEN job_id = ''',
job_id,
''' THEN start_time END) `',
job_id,
'_start`',
',',
'MAX(CASE WHEN job_id = ''',
job_id,
''' THEN end_time END) `',
job_id,
'_end`'
)
)
INTO @sql
FROM t;
SET @sql = CONCAT('SELECT exec_id, ', @sql, '
FROM t
GROUP BY exec_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;