我有一个表,其中两列表示一个间隔:
表A:
-------------------
| id | from | to |
-------------------
| 1 | 9.0 | 8.6 |
| 2 | 3.0 | 2.0 |
使用表A,我想创建下表:
表B:
---------------------
| id_a | from | to |
---------------------
| 1 | 9.0 | 8.8 |
| 1 | 8.8 | 8.6 |
| 2 | 3.0 | 2.8 |
| 2 | 2.8 | 2.6 |
| 2 | 2.6 | 2.4 |
| 2 | 2.4 | 2.2 |
| 2 | 2.2 | 2.0 |
似乎有一个generate_series函数,但它只适用于整数和日期。我还尝试使用数值参数创建generate_series的一个变体,但它没有按预期工作。
如何查询表A以便输出表B?
最佳答案
引用@BasilEricRabi的解决方案:
demo:db<>fiddle
如果将其放入generate_series
列表中,则不需要执行两次FROM
:
SELECT
id,
gs,
gs - 0.2
FROM
intervals,
generate_series("from", "to" + 0.2, -0.2) gs
免责声明:from和to是PostgreSQL中的受限关键字。因此强烈建议您选择其他列名!
关于postgresql - 如何从代表较大间隔的表中创建代表较小间隔的子表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55742018/