Bigquery - 根据条件对当前行和上一行求和

问题描述 投票:0回答:1

我是 SQL 新手,我想执行以下操作:

我有下表:table

我必须使用以下规则构建“DateFinal”列:

  1. 所有内容都必须按“Groupid”列进行分组
  2. 如果 Order = 1,则添加“DateStart”+“Days”
  3. 如果 Order >1,则添加上一行“DateFinal”(第 1 行)+“Days”(第 2 行)的结果

结果应该是这样的: table result

我怎样才能在bigquery中实现这一点?

非常感谢!

WITH Table0 AS 
(SELECT 
  Gruopid,
  DateStart,
  Orden,
  Days
FROM `project.test`
ORDER BY Gruopid,Orden),

Table1 AS
(SELECT
  *,
  CASE 
    WHEN Orden =1 THEN DATE_ADD(DateStart, INTERVAL Days DAY) 
    ELSE NULL END AS DateFinal
FROM Table0)


SELECT 
  *,
  CASE
  WHEN Orden> 1 THEN DATE_ADD(LAG(DateFinal) OVER (PARTITION BY Gruopid ORDER BY Orden),INTERVAL Days DAY)
  ELSE NULL END AS DateFinal
FROM Table1
google-bigquery sum lag
1个回答
0
投票

请考虑以下

select *, 
  datestart + sum(days) over(partition by groupid order by `order`) datefinal
from your_table

有输出

© www.soinside.com 2019 - 2024. All rights reserved.