在 Redshift 中从表中选择 Date1、Date2

Posted

技术标签:

【中文标题】在 Redshift 中从表中选择 Date1、Date2【英文标题】:Select Date1, Date2 From Table while in Redshift 【发布时间】:2020-03-17 07:35:22 【问题描述】:

根据日期范围创建交易的正确语法是什么。

例如。这是我的约会日期

DocID 日期 1 日期 2 0001 2020-01-01 2020-01-03

这就是我想要实现的 因为 (Date1)-(Date2) = 2 这就是为什么我们在 dateref 中有 2020-01-02 和 2020-01-03 并使用相同的 DocID

DocID Date1 Date2 DateRef 0001 2020-01-01 2020-01-03 2020-01-02 0001 2020-01-01 2020-01-03 2020-01-03 谢谢

【问题讨论】:

请解释您预期输出背后的逻辑 hmmm 我只想根据 date1 和 date2 创建一个行项目,例如,如果您在表格上注意到我想要实现的 DocID 已经有 2 个条目,即 2020-01-02和 2020-01-03 您的示例数据难以理解。请在您的表格和输出中添加更多示例。 【参考方案1】:

在 SQL 中执行此操作通常需要数字表或递归 CTE —— Redshift 都不直接支持。

假设你有一个足够大的表来容纳你需要的行,你可以使用:

with n as (
      select row_number() over (order by docid) as n
      from t
     )
select t.*,
       (t.date1 + n * interval '1 day') as date_ref
from t join
     n
     on t.date1 + n * interval '1 day' <= t.date2

【讨论】:

以上是关于在 Redshift 中从表中选择 Date1、Date2的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Redshift 中从不同数据库中选择表

从表中检索列名 -Redshift

如果 Redshift 中存在表,则从表中删除行,否则忽略删除

如何在迁移中从表中删除 softDeletes

在 Snowflake 中从表中取消嵌套

在Oracle中从表中删除重复行