我正在尝试查询包含一character varying[]
列年份的表,并将这些年份作为逗号分隔的年份范围字符串返回。年份范围将由数组中存在的连续年份确定,不连续的年份/年份范围应以逗号分隔。
数据类型是character varying[]
而不是integer[]
的原因是因为一些值包含ALL
而不是年份列表。我们可以省略这些结果。
到目前为止,我几乎没有运气解决这个问题,因为我什至不确定从哪里开始。
有人能给我一些指导或提供一个有用的例子来说明如何解决诸如挑战之类的问题吗?
years_table
例子
+=========+============================+
| id | years |
| integer | character varying[] |
+=========+============================+
| 1 | {ALL} |
| 2 | {1999,2000,2010,2011,2012} |
| 3 | {1990,1991,2007} |
+---------+----------------------------+
输出目标:
示例 SQL 查询:
SELECT id, [year concat logic] AS year_ranges
FROM years_table WHERE 'ALL' NOT IN years
结果:
+====+======================+
| id | year_ranges |
+====+======================+
| 2 | 1999-2000, 2010-2012 |
| 3 | 1990-1991, 2007 |
+----+----------------------+