Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用sql中的权重应用费率列表_Mysql_Sql - Fatal编程技术网

Mysql 使用sql中的权重应用费率列表

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

给定以下一组数据:

输入:

收费表:

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 + 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