使用 sql databricks 中计算的先前值进行计算

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

请帮助我构建一个查询,使用在同一列计算的先前值来计算该值。

事情会是这样的:

Select ID
,n
,CASE WHEN n=1 THEN col1 ELSE col1+col3 END AS col2
,LAG(col2) OVER (PARTITION BY ID ORDER BY n) AS col3
from table

Select ID
,n
,CASE WHEN n=1 THEN col1 ELSE col1+col3 END AS col2
,LAG(col2) OVER (PARTITION BY ID ORDER BY n) AS col3
from table

Databricks 返回:

不支持该功能:引用横向列别名

col2
窗口表达式“LAG(teriorAliasReference(col2)) OVER (按 ID 分区,按 n ASC 为空,第一个未指定帧$())”。

sql window databricks lag partition-by
1个回答
0
投票

派生表中创建 col2 以使其可访问。

select ID, n, col2
      ,LAG(col2) OVER (PARTITION BY ID ORDER BY n) AS col3
from (
  Select ID
        ,n
        ,CASE WHEN n=1 THEN col1 ELSE col1+col3 END AS col2
  from table
) dt
© www.soinside.com 2019 - 2024. All rights reserved.