如何在sql中生成单元格内两个数字之间的数字范围

qvsjd97n  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(531)

我有一张只有一列的table duration 包含整数值,我正在尝试使用sql查询构建另一列,该列将包含一个介于1和 duration 列。
例如:

  1. duration | range
  2. 3 | [1, 2, 3]
  3. 3 | [1, 2, 3]
  4. 2 | [1, 2]
  5. 1 | [1]
  6. ...

我在js中找到了一个潜在的解决方案。

  1. create or replace function list_range(DURATION double)
  2. returns VARCHAR
  3. language javascript
  4. strict
  5. as 'return [...Array(DURATION).keys()];';
  6. SELECT
  7. t.*,
  8. list_range(t.duration) as range
  9. FROM table t

你觉得这个解决方案怎么样?可以优化吗?

yfwxisqw

yfwxisqw1#

  1. with temp as (
  2. select distinct duration, level as l
  3. from duration
  4. connect by level <= duration)
  5. select duration,
  6. '['||listagg(l, ', ') within group(order by l)||']' as range
  7. from temp
  8. group by duration
  9. order by 1 desc;

相关问题