我需要一种返回月份列表的方法,而不是一个周期开始到结束之间的月份数,并且找不到解决方案。
例如,如果记录显示合同期限从2017-04-12开始并在2018-04-22结束,那么我需要返回涵盖所有月份的完整列表。所以输出看起来像这样:
Months_active
2017-04
2017-05
2017-06
2017-07
....
2018-03
2018-04
任何帮助将不胜感激。
答案 0 :(得分:3)
在Teradata中有一个很好的扩展用于创建时间序列:
SELECT To_Char(Begin(pd),'yyyy-mm') -- this extracts the year/month
FROM myTbable
-- this create one row for each month in the date range
EXPAND ON PERIOD(Trunc(start_date,'mon'), Last_Day(end_date)+1) AS pd BY ANCHOR Month_Begin