Google bigquery google bigquery中连续12个月的聚合

Google bigquery google bigquery中连续12个月的聚合,google-bigquery,Google Bigquery,我如何在WHERE子句中汇总一个连续12个月(TTM)的总用例语句?谷歌大查询 这是我的疑问 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 revre

我如何在WHERE子句中汇总一个连续12个月(TTM)的总用例语句?谷歌大查询

这是我的疑问

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')))
选择
clientid,
客户名称,
年(revrecdate)*100个月(revrecdate)作为期间,***命名TTM期间
将(revrecdate)计为作业,
作为利润的总额(利润)
从…起
工作利润
哪里
revrecdate>=“2010-12-01 00:00:00”
和clientid='2KOOLPDX'
月份(revrecdate)=1时的情况
然后(revrecdate=timestamp(concat(string(year(revrecdate)-1),'-02-01'))
当月份(revrecdate)=2时
然后(revrecdate=timestamp(concat(string(year(revrecdate)-1),'-03-01'))

要回答有关将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)
。。。
哪里
revrecdate>=“2010-12-01 00:00:00”
和clientid='2KOOLPDX'
如果(月(revrecdate)=1,
revrecdate=时间戳(concat(字符串(年份(revrecdate)-1),“-02-01”),
(对)
如果(月(revrecdate)=2,
revrecdate=时间戳(concat(字符串(年份(revrecdate)-1),“-03-01”),
(对)

有关IF()的详细信息,请参阅。

您能再解释一下查询吗?不知道它在做什么