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