我需要生成给定间隔的单调递增和递减整数,例如表的一列中的 (10)。
所需的输出从上到下应如下所示:
1,2,3,4,5,6,7,8,9,10,10,9,8,7,6,5,4,3,2,1,1,2,3,4,5,6,7,8,9,10,...
也许使用该功能generate_series(1,100)
或类似的功能?
我需要生成给定间隔的单调递增和递减整数,例如表的一列中的 (10)。
所需的输出从上到下应如下所示:
1,2,3,4,5,6,7,8,9,10,10,9,8,7,6,5,4,3,2,1,1,2,3,4,5,6,7,8,9,10,...
也许使用该功能generate_series(1,100)
或类似的功能?
这里讨论了回答这个(有趣的)问题的几种方法。您可能有兴趣探索这些答案,以便更好地理解该主题(以及一般的 PostgreSQL)。
还讨论了使用
param
表格(作为 CTE)作为系列中的开始和结束编号(即 (3, 5) 将给出 3, 4, 5, 5, 4, 3,...)。最好的方法是(fiddle):
与 @ErwinBrandstetter 的解决方案相比有点迂回,但可能值得一看,如果只是为了学习体验?
小提琴
产生您想要的结果。