कुछ इस तरह करना चाहिए:-
SELECT a.Name, GROUP_CONCAT(YEAR(DATE_ADD(a.start_date, INTERVAL b.aNum YEAR))) AS activity_years
FROM person a
CROSS JOIN (SELECT a.i + b.i * 10 AS aNum FROM integers a, integers b) b
WHERE YEAR(DATE_ADD(a.start_date, INTERVAL b.aNum YEAR)) <= YEAR(a.end_date)
GROUP BY a.Name
यह 0 से 9 के मान के साथ i नामक कॉलम के साथ पूर्णांकों की एक तालिका पर निर्भर करता है। यह 0 से 99 तक की संख्याओं की एक श्रृंखला प्राप्त करने के लिए इसे स्वयं के विरुद्ध जोड़ता है, इसलिए दिनांक सीमाओं के साथ बहुत दूर है।
एक दृश्य में इसका उपयोग करने के लिए उप-चयनों को हटाना
SELECT p.Name, GROUP_CONCAT(YEAR(DATE_ADD(p.start_date, INTERVAL (a.i + b.i * 10) YEAR))) AS activity_years
FROM person p
CROSS JOIN integers a
CROSS JOIN integers b
WHERE YEAR(DATE_ADD(p.start_date, INTERVAL (a.i + b.i * 10) YEAR)) <= YEAR(p.end_date)
GROUP BY p.Name