将 SQL IIF 转换为 Redshift

Posted

技术标签:

【中文标题】将 SQL IIF 转换为 Redshift【英文标题】:Convert SQL IIF to Redshift 【发布时间】:2018-09-06 15:00:40 【问题描述】:

我有 sql server 脚本,需要转换为 Redshift

这是我遇到问题的部分代码

IIF(smf.channelid IS NULL, 0, 1) AS IsFeatureKey,
IIF(codeLabel.CslId > 0, 1, 0) AS IsCslCode,
IIF(codeLabel.LearnId > 0, 1, 0) AS IsLearnCode,
IIF(codeLabel.PMId > 0, 1, 0) AS IsPMCode,
IIF(codeLabel.UpSell > 0, 1, 0) AS IsUpSell

如何正确地将其转换为 Redshift?

【问题讨论】:

【参考方案1】:

IIF 只是CASE 表达式的语法糖(文档中提到了这种行为)。您的代码与以下内容相同:

CASE WHEN smf.channelid IS NULL THEN 0 ELSE 1 END AS IsFeatureKey,
CASE WHEN codeLabel.CslId > 0 THEN 1 ELSE 0 END AS IsCslCode,
CASE WHEN codeLabel.LearnId > 0 THEN 1 ELSE 0 END AS IsLearnCode,
CASE WHEN codeLabel.PMId > 0 THEN 1 ELSE 0 END AS IsPMCode,
CASE WHEN codeLabel.UpSell > 0 THEN 1 ELSE 0 END AS IsUpSell

【讨论】:

以上是关于将 SQL IIF 转换为 Redshift的主要内容,如果未能解决你的问题,请参考以下文章

Access IIF 到 SQL 语句的转换

将 MS Access 查询(使用 IIF() 和 DATESERIAL())事务处理到 T-SQL

将 Access SQL 转换为 MySQL

oracle sql developer中的IIF语句

将 Crystal Reports 条件转换为 SQL Server 条件

访问语句转换为 Sql