【发布时间】:2019-08-27 00:06:33
【问题描述】:
我有一个表,其中列产品、txn_date 和 no_of_txns。最近添加了一列 prev_day_txn 到该列。数据如下:
Product TXN_DATE NO_OF_TXNS
AA 1-JAN-19 100
AA 2-JAN-19 180
AA 3-JAN-19 290
添加新列后,该列中的数据应填充前一天的数据。输出应如下所示:
Product TXN_DATE NO_OF_TXNS PREV_DAY_TXN
AA 1-JAN-19 100 0
AA 2-JAN-19 180 100
AA 3-JAN-19 290 180
我正在尝试使用 lag 函数更新数据,但出现错误 SQL Error: ORA-30483: window functions are not allowed hereSame 查询在 select 子句中工作正常。这是我尝试过的:
update PRD_DTLS set PREV_DAY_TXN = LAG(NO_OF_TXNS, 1, 0) OVER (ORDER BY PRODUCT, TXN_DATE);
谁能帮我查询。谢谢。
【问题讨论】:
-
真是个坏主意!为什么要将值存储在新列中,可以从其他列动态计算?相反,如果您经常需要参考前一天的数据,您应该在 视图 中执行此操作,并在需要时从视图而不是表格中进行选择。如果“性能”是您的理由,请改用物化视图。想一想:你能用锤子打鸡蛋吗?当然可以。你应该? ........