将维度数据摘要为单行

m528fe3b  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(290)

我有一个维度,它有许多属性,类似于下面我为1个产品和列的子集简化的属性:

我想做的是总结:对于给定的prodid,当前的closeddate是什么?目前的截止日期是什么时候开始的?上一个结束日期是什么?上次完结是什么时候开始的?
e、 g.从这个例子中,我的答案是:

截止日期不遵循任何特定的顺序。一个产品不需要有一个关闭日期,如果是的话,它是-1。
我认为我可以使用row\u number()来索引每个历史记录项,因为这将有助于处理最新的内容和以前的结束日期。我被困在如何使前一个关闭日期的有效期从,特别是在我有2行与20200408有关的历史的情况下。
谢谢你的建议。

1qczuiv0

1qczuiv01#

一个选项只使用windows函数。假设你的关系 closedDate 被最高的采摘打破 historyRow ,即:

select 
    prodID,
    closedDate as closedDateCurrent,
    validFrom as closedDateCurrentStart,
    previousClosedDate,
    previousClosedDateStart
from (
    select
        t.*,
        row_number()    
            over(partition by prodID order by closedDate desc, historyRow desc) 
            as rn,
        lag(closedDate) 
            over(partition by prodID order by closedDate desc, historyRow desc) 
            as previousClosedDate,
        lag(validFrom) 
            over(partition by prodID order by closedDate desc, historyRow desc) 
            as previousClosedDateStart
    from mytable t
) t
where rn = 1

相关问题