我正在尝试在雪花的 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/