如何在WHERE子句中聚合一个12个月(TTM)的总用例语句?google-bigquery
这是我的问题。
SELECT
clientid,
clientname,
year(revrecdate)*100 + month(revrecdate) as Period, *** NAMES the TTM period
count(revrecdate) as Jobs,
sum(profit) as Profits
FROM
oiafd.JobProfit
WHERE
revrecdate >= '2010-12-01 00:00:00'
and clientid = '2KOOLPDX'
and CASE WHEN month(revrecdate) = 1
THEN(revrecdate <= timestamp(concat(string(year(revrecdate)),'-01-31')) and
revrecdate >= timestamp(concat(string(year(revrecdate)-1),'-02-01')))
WHEN month(revrecdate) = 2
THEN(revrecdate <= timestamp(concat(string(year(revrecdate)),'-02-28')) and
revrecdate >= timestamp(concat(string(year(revrecdate)-1),'-03-01')))发布于 2013-08-27 02:57:09
要回答有关将CASE语句的概念转换为适用于BigQuery的内容的问题:您可以使用IF函数将每个CASE分解为WHERE中的单独子句。
像这样的东西将会起作用:
...
WHERE
revrecdate >= '2010-12-01 00:00:00'
and clientid = '2KOOLPDX'
and IF(month(revrecdate) = 1,
revrecdate <= timestamp(concat(string(year(revrecdate)),'-01-31')) and
revrecdate >= timestamp(concat(string(year(revrecdate)-1),'-02-01')),
true)
and IF(month(revrecdate) = 2,
revrecdate <= timestamp(concat(string(year(revrecdate)),'-02-28')) and
revrecdate >= timestamp(concat(string(year(revrecdate)-1),'-03-01')),
true)有关IF()的详细信息,请参阅https://developers.google.com/bigquery/query-reference#otherfunctions。
https://stackoverflow.com/questions/18148925
复制相似问题