从昨天开始,我尝试在selectquery中实现lead函数功能,但它对我不起作用。
SELECT inbp_ingangsdatum,
previous
FROM (SELECT ibp.inbp_ingangsdatum,
@prev previous,
@prev := inbp_ingangsdatum AS prev
FROM base ibp,
(SELECT @prev := '') r
ORDER BY inbp_ingangsdatum) AS t1;
电流输出
val previous
20090101
20120401 20090101
20120402 20120401
20120403 20120402
20120404 20120403
预期产量
val previous
20090101 20120401
20120401 20120402
20120402 20120403
20120403 20120404
20120404 20120405
2条答案
按热度按时间ki1q1bka1#
我会使用相关的子查询,并特别注意关系:
kcrjzv8t2#
LEAD()
函数获取“下一行”值。我不知道你为什么叫它prev
. 我用的是化名next
为了清楚起见。在使用用户定义的变量时,我们可以访问
SELECT
子句,但获取下一行(即将到来的)的值是很棘手的。我们必须明确订购inbp_ingangsdatum
按降序排列(与我们的最终排序要求相反)。现在,我们将使用这个结果集来获取“next”行。由于顺序相反,上一个值基本上是下一个值。
我们最终将在最外层的查询中对结果集重新排序。
架构(mysql v5.6)
查询#1
结果:
db fiddle视图