在 Amazon Redshift 中是不是可以在两列上设置条件?

Posted

技术标签:

【中文标题】在 Amazon Redshift 中是不是可以在两列上设置条件?【英文标题】:In Amazon Redshift is it possible to have a condition on two columns?在 Amazon Redshift 中是否可以在两列上设置条件? 【发布时间】:2021-09-09 15:18:06 【问题描述】:

我有下表,如下所示。我想为其 Group 提取具有最小 Row_Flag 的行,其中 Record_Flag 等于 0。如果 Record_Flag 不等于 0,逻辑应该提取下一个最小的 Row_Flag,其中 Record_Flag 等于 0。这些行以黄色突出显示。我不确定是否可以在 Redshift 的 SQL 编辑器中执行这种“双重条件”逻辑。是否可以在 Redshift 中计算这种逻辑?如果是这样,我该怎么做?

【问题讨论】:

我删除了 Postgres 标签。如今,Postgres 真的与 RedShift 无关。 【参考方案1】:

您可以使用row_number()。我将您的问题解释为您想要最小的row_flagrecord_flag = 0。而record_flag 只取值01

select t.*
from (select t.*,
             row_number() over (partition by group
                                order by record_flag, row_flag
                               ) as seqnum
      from t
     ) t
where seqnum = 1;

【讨论】:

以上是关于在 Amazon Redshift 中是不是可以在两列上设置条件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用SQL或Python在Amazon Redshift中从Amazon Snow雪花重新创建数据库表? (一次重新创建所有ot,而不是一次一遍地创建)

Amazon Redshift 是不是支持扩展 dblink?

Amazon Redshift 是不是有自己的存储后端

使用 Amazon Redshift 进行维度建模是不是可行

Amazon RedShift 中的“复制”命令是不是是原子的?

我们可以在 Amazon redshift 中使用 CTAS 创建表时使用压缩吗