繁体   English   中英

为上个月创建带有 true/false 的列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM