【发布时间】:2022-01-22 21:42:43
【问题描述】:
我在 postgres 中有一个表,查询如下:
SELECT col_a, col_b, col_c, year1
,round(((year1::text || '-12-31')::date - d_start) / 30.5, 0) as mis
FROM (
SELECT *, date_part('year', current_date) + generate_series(-2, 4) as year1
FROM schema.table
我正在将此查询迁移到雪花:
SELECT col_a, col_b, col_c, year1
,round(((year1::text || '-12-31')::date - d_start) / 30.5, 0) as mis
FROM (
SELECT *, YEAR(CURRENT_DATE) + ROW_NUMBER() OVER(ORDER BY seq8())-3
FROM TABLE(GENERATOR(ROWCOUNT => 7)) as year1
from schame.table
但在雪花中我面临错误,因为它不允许 from 声明 甚至在下面也尝试过,但数据结果不佳:
SELECT col_a, col_b, col_c, year1
,round(((year1::text || '-12-31')::date - d_start) / 30.5, 0) as mis
FROM (
SELECT *, YEAR(CURRENT_DATE) + ROW_NUMBER() OVER(ORDER BY seq8())-3
FROM TABLE(GENERATOR(ROWCOUNT => 7)) as year1
,
from schame.table
postgres 查询给出生成 year1 列值的结果:
2019 to 2025 repeatedly as
|year1|
|-----|
|2019 |
|2020 |
|2021 |
|2022 |
|2023 |
|2024 |
|2025 |
|2019 |
|2020 |
|2021 |
|2022 |
|2023 |
|2024 |
|2025 |
但在雪花中,它甚至会在 2025 年之后产生:
|year1|
|-----|
|2019 |
|2020 |
|2021 |
|2022 |
|2023 |
|2024 |
|2025 |
|2026 |
|2027 |
|2028 |
|2029 |
|2030 |
|2031 |
|2032 |
我错过了什么
感谢您的帮助
【问题讨论】:
-
嗨,我只运行了这部分查询,从 2019 年到 2025 年有 7 年。你也可以运行看看你是否得到那个或直到 2032 年。SELECT *, YEAR(CURRENT_DATE) + ROW_NUMBER() OVER(ORDER BY seq8())-3 FROM TABLE(GENERATOR(ROWCOUNT => 7)) 作为 year1。
-
请分享正确的雪花查询。您共享的查询无法编译。
标签: sql postgresql snowflake-cloud-data-platform