簡體   English   中英

從 Teradata SQL 中的先前 Window 分區獲取最后一個值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM