我有一个表,其中两列表示一个间隔:
表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/

10-16 17:22