[英]Create column with true/false for previous month
我有一列日期格式如下:yyyy/m/d
如何创建一个计算列,该列对于上个月的每个条目都具有 true 值,对于 rest 具有 false 值? 我试过如下,但我没有得到正确的 output。
IF(Date = DATE_SUB(DATE_TRUNC(Date, MONTH), INTERVAL 1 MONTH), TRUE, FALSE) AS PreviousMonth
以下是 BigQuery 标准 SQL
如果您的日期列是 STRING 数据类型,格式为 yyyy/m/d(如原始问题中所述) - 您可以在下面使用
#standardSQL
SELECT *,
DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), MONTH) =
DATE_TRUNC(PARSE_DATE('%Y/%m/%d', date), MONTH) AS PreviousMonth
FROM `project.dataset.table`
如果您的数据列是 DATE 数据类型 - 您应该在下面使用
#standardSQL
SELECT *,
DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), MONTH) =
DATE_TRUNC(date, MONTH) AS PreviousMonth
FROM `project.dataset.table`
您可以尝试此替代选项:
WITH querytable AS(
SELECT '2020/06/29' AS input_date
UNION ALL
SELECT '2020/07/29' AS input_date
UNION ALL
SELECT '2020/08/30' AS input_date )
SELECT
PrevMonth,
CurrMonth,
IF(PrevMonth = CurrMonth, TRUE, FALSE) true_false
FROM (
SELECT EXTRACT(MONTH FROM PARSE_DATE('%Y/%m/%d', input_date)) AS PrevMonth,
EXTRACT(MONTH FROM DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)) AS CurrMonth
FROM
querytable)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.