繁体   English   中英

像那时那样求和

[英]Sum case when like then

我在 BigQuery 上使用数据集,基本上我想拉一个表来显示特定年份每月销售的总升数。 这是我目前写的:

SELECT 
SUM( CASE WHEN `date` LIKE '2012-01-%' THEN `volume_sold_liters` END) as Jan_Total
FROM `personal-projects-340200.Iowa_liquor_cedar_rapids.store_3`

这是我也收到的错误消息:

参数类型的 LIKE 运算符没有匹配的签名:DATE、STRING。 支持的签名:STRING LIKE STRING; [2:16] 的字节类似字节

我知道错误消息要求我将字符串更改为日期,但我该怎么做? 我想将同一个月的多个日期加在一起。 我尝试将日期切换为字符串,结果在我的表中得到 NULL。

我究竟做错了什么? go关于拉我想要的桌子有没有更好的方法?

您可以根据自己的情况使用 BigQuery 提供的专用日期函数。 由于您想要购买日期的月份部分,您可以考虑类似下面的查询

SELECT
  SUM(CASE
          WHEN DATE_TRUNC(purchase_date, MONTH) = '2022-01-01' THEN volume
          ELSE 0
      END
    ) AS Jan_Total
FROM
  `personal-projects-340200.Iowa_liquor_cedar_rapids.store_3`

您得到的错误是因为您尝试将 DATE 与 STRING 进行比较。 要解决这个问题,您可以拨打 go

SELECT
  SUM(CASE
          WHEN CAST(purchase_date AS STRING) LIKE '2022-01-%' THEN volume
          ELSE 0
      END
    ) AS Jan_Total
FROM
  `personal-projects-340200.Iowa_liquor_cedar_rapids.store_3`

但是在操作日期时最好使用日期函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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