Mysql 使用sql中的权重应用费率列表
给定以下一组数据: 输入: 收费表: 1公斤0.500克=0.5卢比 我正在寻找以下 期望输出 对于数量,可以使用大小写表达式,如Mysql 使用sql中的权重应用费率列表,mysql,sql,Mysql,Sql,给定以下一组数据: 输入: 收费表: 1公斤0.500克=0.5卢比 我正在寻找以下 期望输出 对于数量,可以使用大小写表达式,如 case when (weight - 1) <= 0 then 2.5 else 2.5 + ((weight - 1) / 0.500) * 0.5 end as amount 试试这个,在SQLFIDLE中查看: select *, case when WEIGHT <= 1 then 2.5 else 2.5
case when (weight - 1) <= 0 then 2.5 else 2.5 + ((weight - 1) / 0.500) * 0.5 end as amount
试试这个,在SQLFIDLE中查看:
select
*,
case when WEIGHT <= 1 then 2.5
else 2.5 + CEILING((WEIGHT - 1) / 0.5) * 0.5 end as AMOUNT
from yourtable
官方文件说:
返回不小于X的最小整数值
Rahul先生,您的问题不适用于2.40公斤。请访问并编辑您的问题,包括您尝试过的内容以及您遇到的问题。所以这不是一个代码请求comunity。
case when (weight - 1) <= 0 then 2.5 else 2.5 + ((weight - 1) / 0.500) * 0.5 end as amount
select
*,
case when WEIGHT <= 1 then 2.5
else 2.5 + CEILING((WEIGHT - 1) / 0.5) * 0.5 end as AMOUNT
from yourtable
Use below query to get your result :
CREATE TABLE #table ( awbno INT, byhub VARCHAR(100), WEIGHT DECIMAL(12,2) ,
Amount DECIMAL(12,2))
INSERT INTO #table ( awbno , byhub, WEIGHT )
SELECT 111,'HO',2.50 UNION ALL
SELECT 222,'HO',3.00 UNION ALL
SELECT 333,'HO',2.40 UNION ALL
SELECT 444,'HO',0.80 UNION ALL
SELECT 555,'HO',1.00
UPDATE #table SET Amount = CASE WHEN (WEIGHT-1)/0.5 < 1 THEN 2.5 WHEN WEIGHT
> 1 THEN 2.5 + ( (WEIGHT-1)/0.5 * 0.5 ) END
SELECT * FROM #table