我正在实现带有到期功能的返现功能。我正在尝试根据提前到期日期兑换部分金额。我已经用下面的mysql命令根据到期日期对行进行了排序。
SELECT * FROM `cashback` WHERE `user_id` = 1 and `used`= 'NO' AND IF(CONCAT(`point_expiry`) !='0000-00-00 00:00:00', `point_expiry` >= NOW(), NOW()) ORDER BY (case when CONCAT(`point_expiry`) = '0000-00-00 00:00:00' then 9999
else 1
end) ASC, `point_expiry` ASC
下面的输出为
| 身份证|数量|点_到期日|用过的|用户标识|
| - ------|- ------|- ------|- ------|- ------|
| 三个|三十|2023年2月24日00时00分|否|1个|
| 1个|二十个|2023年2月25日00时00分|否|1个|
| 第二章|五十|00时00分00秒00时00分|否|1个|
现在我想根据上面的查询结果兑换价值
假设我想用35$
兑换上述结果,预期结果为
| 身份证|数量|点_到期日|用过的|使用量|
| - ------|- ------|- ------|- ------|- ------|
| 三个|三十|2023年2月24日00时00分|否|三十|
| 1个|二十个|2023年2月25日00时00分|否|五个|
这里used_amount
列表示基于amount
列兑换的特定兑换值($35
非常感谢你的帮助!
1条答案
按热度按时间pokxtpni1#
这个函数使用
SUM(amount) OVER(ORDER BY ...)
来计算累计值,并将其与余额进行比较。