甲骨文:LAST_VALUE 与 FIRST_VALUE [重复]

Posted

技术标签:

【中文标题】甲骨文:LAST_VALUE 与 FIRST_VALUE [重复]【英文标题】:Oracle: LAST_VALUE vs FIRST_VALUE [duplicate] 【发布时间】:2019-04-11 13:05:22 【问题描述】:

我有这样的看法:

ORGANIZATION_ID|INVENTORY_ITEM_ID|ITEM_COST|PERIOD_DATE        |
---------------|-----------------|---------|-------------------|
           1271|            37061|    49.64|2019-02-28 23:59:59|
           1271|            37061|    50.15|2019-01-31 23:59:59|
           1271|            37061|    58.99|2018-12-31 23:59:59|
           1271|            37061|    56.85|2018-11-30 23:59:59|
           1271|            37061|    34.78|2018-10-31 23:59:59|
           1271|            37061|    44.91|2018-09-30 23:59:59|
           1271|            37061|    44.05|2018-08-31 23:59:59|
           1271|            37061|    20.84|2018-07-31 23:59:59|
           1271|            37061|    19.95|2018-06-30 23:59:59|
           1271|            37061|    18.56|2018-05-31 23:59:59|
           1271|            37061|    17.42|2018-04-30 23:59:59|
           1271|            37061|    13.62|2018-03-31 23:59:59|
           1271|            37061|    13.62|2018-02-28 23:59:59|
           1271|            37061|    13.62|2018-01-31 23:59:59|

当我执行 FIRST_VALUE 时:

SELECT UNIQUE FIRST_VALUE(ITEM_COST) OVER (ORDER BY PERIOD_DATE DESC) 
FROM SOMEVIEW 
WHERE INVENTORY_ITEM_ID = 37061 
AND ORGANIZATION_ID = 1271

我明白了:

FIRST_VALUE(ITEM_COST)OVER(ORDERBYPERIOD_DATEDESC)|
--------------------------------------------------|
                                             49.64|

根据需要。

当我执行 LAST_VALUE 时

SELECT UNIQUE LAST_VALUE(ITEM_COST) OVER (ORDER BY PERIOD_DATE DESC) 
FROM SOMEVIEW 
WHERE INVENTORY_ITEM_ID = 37061 
AND ORGANIZATION_ID = 1271

我明白了:

LAST_VALUE(ITEM_COST)OVER(ORDERBYPERIOD_DATEDESC)|
-------------------------------------------------|
                                            49.64|
                                            56.85|
                                            44.05|
                                            18.56|
                                            34.78|
                                            19.95|
                                            20.84|
                                            13.62|
                                            58.99|
                                            44.91|
                                            50.15|
                                            17.42|

不应该是 13.62 吗?而且,为什么选择会返回所有这些值?我检查了文档并没有得到它。

我什至尝试通过 Org_ID 等向订单添加更多列,结果相同。

【问题讨论】:

见***.com/questions/16274362/… 【参考方案1】:

因为默认窗口是

range between unbounded preceding and current row

【讨论】:

以上是关于甲骨文:LAST_VALUE 与 FIRST_VALUE [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS SQL 中将 last_value 与 group by 结合使用?

SQL查询获取分区里最大和最小值_first_value/last_value

翻译:last_value()函数(已提交到MariaDB官方手册)

GROUP BY 中的 SQL Server 2014 LAST_VALUE

oracle last_value使用过程中的一个细节

Oracle分析函数-first_value()和last_value()