[英]Get Last Value from Previous Window Partition in Teradata SQL
嗨,我正在嘗試從上一季度末(最后一列)獲取值,如圖所示。
對於屬性 A,第 4 個月,第 2 季度,它應該返回上一季度 (30) 中第 3 個月的值。 第 5 個月和第 6 個月也是如此。
所有沒有前一個季度的季度都應該返回 1。這同樣適用於其他屬性。 我嘗試使用帶有分區的 LAG() 和 LAST_VALUE() 函數但沒有成功,因為我無法獲得最后一個季度的結束值。
任何幫助將不勝感激。
謝謝!
假設沒有缺少月份,LAST_VALUE 加上 COALESCE 是通往 go 的方式:
coalesce(last_value(case when month in (3,6,9,12) then value end ignore nulls)
over (partition by attribute
order by month
rows between unbounded preceding and 1 preceding)
, 1)
嗯。 . . 我認為最簡單的方法是使用join
,每季度獲取您想要的一行:
select t.*, coalesce(tt.value, 1)
from t left join
(select t.*
from t
qualify row_number() over (partition by quarter order by month desc) = 1
) tt
on tt.quarter = t.quarter - 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.