【发布时间】:2023-03-16 09:29:01
【问题描述】:
我正在尝试构建一个视图,该视图允许我跟踪两个连续 month_id 的付费值之间的差异。然而,当一个数字丢失时,那将是因为它是第一个条目,因此支付金额为 0。目前,我使用下面的数字来表示上一个数字,因为 [,default] 参数尚未在 MariaDB 中实现.
CASE WHEN (
NOT(policy_agent_month.policy_agent_month_id IS NOT NULL
AND LAG(days_paid, 1) OVER (PARTITION BY claim_id ORDER BY month_id ) IS NULL)) THEN
LAG(days_paid, 1) OVER ( PARTITION BY claim_id ORDER BY month_id)
ELSE
0
END
我遇到的问题是我有大约 30 个变量需要应用此函数,这使我的代码不可读且非常笨重。有没有更好的解决方案?
【问题讨论】:
-
LAG() 和 LEAD() 的默认值始终是 1 条记录“后退”或“前进”...
LAG(<column>)和LAG(<column>, 1)意思相同。 -
其他版本的 SQL 中的 'default' 参数是指处理 NULL 值。目前我并没有为“距离”而苦苦挣扎。
-
因为它接缝的标题你对它有“问题”或对此有疑问..我建议你阅读Why should I provide an MCVE for what seems to me to be a very simple SQL query?然后。
-
“其他版本的 SQL 中的 'default' 参数是指处理 NULL 值”@TheImpaler 的答案有什么问题,因为它似乎是您使用的这个“默认”值的有效解决方法之后。
-
看起来没有什么问题。在我承诺之前,我只是先进行实施。
标签: mariadb