我有一张表格,其中两列代表一个间隔:
表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?
答案 0 :(得分:1)
引用@BasilEricRabi的解决方案:
如果将generate_series
放入FROM
列表中,则无需执行两次:
SELECT
id,
gs,
gs - 0.2
FROM
intervals,
generate_series("from", "to" + 0.2, -0.2) gs
答案 1 :(得分:0)
愚蠢的我!谢谢@a_horse_with_no_name的指导。最近刚刚开始使用postgresql。解决方案是如此简单。
SELECT id as id_a,
generate_series(from, to + 0.2, -0.2) as from,
generate_series(from - 0.2, to, -0.2) as to
FROM table_a ;