以下是 BigQuery StandardSQL
#standardsQL
CREATE TEMP FUNCTION monthValue(ts TIMESTAMP, m INT64, y INT64, value INT64) AS (
IF(EXTRACT(MONTH FROM ts) = m AND EXTRACT(YEAR FROM ts) = y, value, 0)
);
SELECT
SUM(monthValue(timestamp, 1, 2018, total)) AS January,
SUM(monthValue(timestamp, 2, 2018, total)) AS February,
SUM(monthValue(timestamp, 3, 2018, total)) AS March,
SUM(monthValue(timestamp, 4, 2018, total)) AS April,
SUM(monthValue(timestamp, 5, 2018, total)) AS May,
SUM(monthValue(timestamp, 6, 2018, total)) AS June,
SUM(monthValue(timestamp, 7, 2018, total)) AS July,
SUM(monthValue(timestamp, 8, 2018, total)) AS August,
SUM(monthValue(timestamp, 9, 2018, total)) AS September,
SUM(monthValue(timestamp, 10, 2018, total)) AS October,
SUM(monthValue(timestamp, 11, 2018, total)) AS November,
SUM(monthValue(timestamp, 12, 2018, total)) AS December
FROM
`yourproject.yourdataset.yourtable`
我们可以在旧版 SQL 中执行此操作吗?
对于旧版 SQL,请参见下文
#legacySQL
SELECT
SUM(IF(MONTH(timestamp) = 1 AND YEAR(timestamp) = 2018, total, 0)) AS January,
SUM(IF(MONTH(timestamp) = 2 AND YEAR(timestamp) = 2018, total, 0)) AS February,
SUM(IF(MONTH(timestamp) = 3 AND YEAR(timestamp) = 2018, total, 0)) AS March,
SUM(IF(MONTH(timestamp) = 4 AND YEAR(timestamp) = 2018, total, 0)) AS April,
SUM(IF(MONTH(timestamp) = 5 AND YEAR(timestamp) = 2018, total, 0)) AS May,
SUM(IF(MONTH(timestamp) = 6 AND YEAR(timestamp) = 2018, total, 0)) AS June,
SUM(IF(MONTH(timestamp) = 7 AND YEAR(timestamp) = 2018, total, 0)) AS July,
SUM(IF(MONTH(timestamp) = 8 AND YEAR(timestamp) = 2018, total, 0)) AS August,
SUM(IF(MONTH(timestamp) = 9 AND YEAR(timestamp) = 2018, total, 0)) AS September,
SUM(IF(MONTH(timestamp) = 10 AND YEAR(timestamp) = 2018, total, 0)) AS October,
SUM(IF(MONTH(timestamp) = 11 AND YEAR(timestamp) = 2018, total, 0)) AS November,
SUM(IF(MONTH(timestamp) = 12 AND YEAR(timestamp) = 2018, total, 0)) AS December
FROM [yourproject:yourdataset.yourtable]
注意:BigQuery 团队非常推荐migrate to Standard SQL