view - 不能在雪花中工作 - “IFF”声明
问题描述
我正在尝试在雪花视图中实现以下语句
IFF("Closed" = TRUE,DATEDIFF(DAY,TO_DATE("ActualFinishDate"),current_date()),FALSE) - 得到真/假
如果我给出 IFF("Closed" = TRUE,'1234',FALSE) 它将不起作用 - 这有效并且我根据关闭的值得到 1234 或 False
有人可以帮我为什么 DATEDIFF(DAY,TO_DATE("ActualFinishDate"),current_date()) 在 IFF 中没有给出结果我测试了如果我单独执行该语句是正确的和正确的值。
解决方案
都是关于数据类型的
在 CASE 的第二种形式中,每个值都是 expr 的潜在匹配项。该值可以是文字或表达式。该值必须与 expr 的数据类型相同,或者必须是可以强制转换为 expr 的数据类型的数据类型。
区别如下:
DATEDIFF returns INTEGER, BOOLEAN
vs
'1234' string literal, BOOLEAN
对于 Booelan,它的工作原理如下:
For a text expression, string must be: 'true', 't', 'yes', 'y', 'on', '1' return TRUE. 'false', 'f', 'no', 'n', 'off', '0' return FALSE. All other strings return an error. Strings are case-insensitive. For a numeric expression: 0 returns FALSE. All non-zero values return TRUE.
编辑:
为了返回字符串而不是布尔显式转换,可以使用:
IFF("Closed" = TRUE,TO_VARCHAR(DATEDIFF(DAY,TO_DATE("ActualFinishDate"),current_date())),FALSE)
-- "Closed" column is probably boolean so there is no need to ` = TRUE`:
IFF("Closed",TO_VARCHAR(DATEDIFF(DAY,TO_DATE("ActualFinishDate"),current_date())),FALSE)
推荐阅读
- sql-server - 如何在 SQL Server 中格式化 int
- python - 使用 python (pandas, matplotlib) 在数据中创建具有选定参数的直方图
- android - Android应用程序文本对齐在各种设备上不匹配
- python - 在 Python 中访问数据库无法追踪的数据源
- angular - Asp.Net Core Web APi 和 Azure AD 身份验证
- c++ - c++ sqlite3更新查询未提交
- javascript - 如何在 Javascript 中为 onclick PopUp 添加事件监听器?
- c# - 为什么我会收到 StackOverflowException?
- database - 在表中插入“祖父”外键以避免过度连接有什么缺点?
- php - 如何在图像下插入多个图像名称