说我有一个这样的表:
member start_year end_year
John 2013 2017
如何生成
member year
John 2013
John 2014
John 2015
John 2016
John 2017
在SQL中?
答案 0 :(得分:1)
典型的解决方案涉及递归CTE。首先,首先选择所有成员,然后递归UNION ALL
,直到结束。
WITH cte
AS
(
SELECT t.member,
t.start_year year
FROM elbat t
UNION ALL
SELECT t.member,
c.year + 1
FROM cte c
INNER JOIN elbat t
ON t.member = c.member
WHERE c.year + 1 <= t.end_year
)
SELECT *
FROM cte;