SELECt a.ID,
a.Campaign_ID,
a.FirstName,
a.LastName,
MAX(CASE WHEN b.data = ‘qwerty1’ THEN b.Name END) qwerty1,
MAX(CASE WHEN b.data = ‘qwerty2’ THEN b.Name END) qwerty2,
MAX(CASE WHEN b.data = ‘qwerty3’ THEN b.Name END) qwerty3
FROM Participants a
INNER JOIN Participants_Custom b
ON a.ID = b.Participant_ID
GROUP BY a.ID,
a.Campaign_ID,
a.FirstName,
a.LastName
- SQLFiddle演示
更新1
由于的值
data未知,因此 动态sql 更为可取。
SET @sql = NULL;SELECt GROUP_CONCAt(DISTINCT CONCAt( 'MAX(CASE WHEN b.data = ''', data, ''' THEN b.Name ELSE NULL END) AS ', CONCAt('`',data, '`') ) ) INTO @sqlFROM Participants_Custom;SET @sql = CONCAt('SELECt a.ID, a.Campaign_ID, a.FirstName, a.LastName,', @sql, 'FROM Participants a INNER JOIN Participants_Custom b ON a.ID = b.Participant_ID GROUP BY a.ID, a.Campaign_ID, a.FirstName, a.LastName');PREPARE stmt FROM @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;- SQLFiddle演示



