我有一个数据集,其中的行对应于在不同时间点收集的数据,如下所示: metricdateFYresult visits03/01/2024FY2417 visits04/01/2024FY2421 visits05/01/2024FY2434
我有一个数据集,其中的行对应于在不同时间点收集的数据,如下所示:
度量
|
日期
|
我的
|
结果
|
访问
|
2024 年 3 月 1 日
|
24 财年
|
17
|
访问
|
2024 年 4 月 1 日
|
24 财年
|
21
|
访问
|
2024 年 5 月 1 日
|
24 财年
|
三十四
|
访问
|
2024 年 6 月 1 日
|
25财年
|
99
|
访问
|
2024 年 7 月 1 日
|
25财年
|
11
|
访问
|
2024 年 8 月 1 日
|
25财年
|
二十七
|
我想添加一列,显示结果列中的值:(a) 与当前月份位于同一财政年度,并且 (b) 是最远的 - 数据集中的每个指标都没有 12 个月前的值,有些可能有 3 个月或 7 个月或 11 个月的值,等等...
期望输出:
度量
|
日期
|
我的
|
结果
|
一年前
|
访问
|
2024 年 3 月 1 日
|
24 财年
|
17
|
17
|
访问
|
2024 年 4 月 1 日
|
24 财年
|
21
|
17
|
访问
|
2024 年 5 月 1 日
|
24 财年
|
三十四
|
17
|
访问
|
2024 年 6 月 1 日
|
25财年
|
99
|
99
|
访问
|
2024 年 7 月 1 日
|
25财年
|
11
|
99
|
访问
|
2024 年 8 月 1 日
|
25财年
|
二十七
|
99
|
我尝试在 case 语句中使用 LAG 循环遍历前 12 个月,但它却返回 0,不确定多个表达式是否匹配或不匹配字符串和整数?
CASE
WHEN result <> 0 AND LAG(FY,1) = FY THEN COALESCE(LAG(result,1) OVER (PARTITION BY date ORDER BY date),0)
WHEN result <> 0 AND LAG(FY,2) = FY THEN COALESCE(LAG(result,2) OVER (PARTITION BY date ORDER BY date),0)
WHEN result <> 0 AND LAG(FY,3) = FY THEN COALESCE(LAG(result,3) OVER (PARTITION BY date ORDER BY date),0)
WHEN result <> 0 AND LAG(FY,4) = FY THEN COALESCE(LAG(result,4) OVER (PARTITION BY date ORDER BY date),0)
WHEN result <> 0 AND LAG(FY,5) = FY THEN COALESCE(LAG(result,5) OVER (PARTITION BY date ORDER BY date),0)
WHEN result <> 0 AND LAG(FY,6) = FY THEN COALESCE(LAG(result,6) OVER (PARTITION BY date ORDER BY date),0)
WHEN result <> 0 AND LAG(FY,7) = FY THEN COALESCE(LAG(result,7) OVER (PARTITION BY date ORDER BY date),0)
WHEN result <> 0 AND LAG(FY,8) = FY THEN COALESCE(LAG(result,8) OVER (PARTITION BY date ORDER BY date),0)
WHEN result <> 0 AND LAG(FY,9) = FY THEN COALESCE(LAG(result,9) OVER (PARTITION BY date ORDER BY date),0)
WHEN result <> 0 AND LAG(FY,10) = FY THEN COALESCE(LAG(result,10) OVER (PARTITION BY date ORDER BY date),0)
WHEN result <> 0 AND LAG(FY,11) = FY THEN COALESCE(LAG(result,11) OVER (PARTITION BY date ORDER BY date),0)
ELSE 0
END AS year_ago