sql - Snowflake 中 WHERE 子句中的 CASE

标签 sql snowflake-cloud-data-platform

我正在尝试在雪花的 where 子句中执行 case 语句,但我不太确定应该如何去做。

我想要做的是,如果我当前的月份是一月,那么日期的 where 子句是在上一年开始和今天之间。如果不是,则日期的 where 子句将位于当年开始和今天之间。

WHERE 
CASE MONTH(CURRENT_DATE()) = 1 THEN DATE BETWEEN DATE_TRUNC(‘YEAR’, DATEADD(YEAR, -1, CURRENT_DATE())) AND CURRENT_DATE()
CASE MONTH(CURRENT_DATE()) != 1 THEN DATE BETWEEN DATE_TRUNC(‘YEAR’, CURRENT_DATE()) AND CURRENT_DATE()
END

感谢对此的任何帮助!

最佳答案

使用 CASE 表达式,如果当前月份是 1 月,则返回 -1;对于任何其他月份,则返回 0,这样您就可以得到其中 DATEADD() 是要在 DATE_TRUNC() 中使用的上一年或当前年份的日期:

WHERE DATE BETWEEN 
        DATE_TRUNC('YEAR', DATEADD(YEAR, CASE WHEN MONTH(CURRENT_DATE()) = 1 THEN -1 ELSE 0 END, CURRENT_DATE())) 
        AND 
        CURRENT_DATE()

关于sql - Snowflake 中 WHERE 子句中的 CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72656626/

相关文章:

php - 外键mysql

java - 如何在 StringBuilder 中追加星号 * ?

sql - 为什么仅索引扫描成本太高?

mysql - 缺失记录的引导功能

stored-procedures - Snowflake使用不同的参数重新打开游标

sql - 对日期从最旧到最新的 SQL 进行排名

sql - 添加一个汇总行,其中包含每个子句的总计

php - 通知 : Undefined index, php

sql - 如何获取雪花查询历史记录中每个查询使用的表列表

python - pandas- fetch_pandas_all 连接器杀死内核