簡體   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