如何用 Oracle 中应用 Lead() 函数的同一列值替换最后一行中的 NULL?
Posted
技术标签:
【中文标题】如何用 Oracle 中应用 Lead() 函数的同一列值替换最后一行中的 NULL?【英文标题】:How to replace NULL in the last row with the same column's value on which Lead() function is applied in Oracle? 【发布时间】:2020-01-31 06:46:12 【问题描述】:我已经在销售列上应用了lead() 函数,并且由于lead() 为列 following_year_sales 的最后一行返回 NULL,我希望该值是 1990776.95 而不是 NULL,如何解决这个问题?
我已使用此查询,输出显示在图像中。
SELECT
salesman_id,
year,
sales,
LEAD(sales) OVER (
ORDER BY year
) following_year_sales
FROM
salesman_performance
WHERE
salesman_id = 55;
请帮忙。
【问题讨论】:
问题很清楚,“a_horse”已经给你答案了。不过,我想知道为什么您要这样做。将NULL
留在最后一行有什么问题?显然,这是正确的报告;否则,将来阅读报告的人可能会产生错误的印象,即 2018 年的价值与 2017 年的价值相同。他们应该如何理解 2018 年的价值没有,而是否使用了 2017 年的值?
这只是一个示例,实际的任务是另外一回事,我想要该任务的逻辑,无论如何我找到了出路。
【参考方案1】:
您可以使用三个参数调用lead()
。第二个是要向前看的行数,第三个是在没有这样的行的情况下使用的默认值。如果您再次指定该列作为默认值,它将使用该行的值
LEAD(sales, 1, sales) OVER (ORDER BY year) following_year_sales
【讨论】:
以上是关于如何用 Oracle 中应用 Lead() 函数的同一列值替换最后一行中的 NULL?的主要内容,如果未能解决你的问题,请参考以下文章