我目前正在为运输公司设计发票的数据库。 我卡住的地方是如何计算超出人数限制的费率。
我有一个名为tblRates的表 列{id,from_weight,to_wight,price} 行就像
killall
正如您所看到的那样,只需在查询之间使用,我就可以轻松获得高达2公斤的费率。但是当重量超过2公斤时,我想把它分成500克的切片并为每片切片加20块钱。例如如果重量是3300,价格将是40美元+ $(3 * 20)。不要担心基于位置的定价。为了简单起见,我只是为了理解我的问题而将价格转移到此表中。它只是在给定的重量超过极限时如何确定切片。
// wip sp
[{1,0,499,20$},
{2,500,1999,40$}, //max weight 2Kg
{3,2000,'unlimited','$20'}] //this row holds pricing for every add 500gm
答案 0 :(得分:2)
http://sqlfiddle.com/#!6/127b8/31
Create Table tblRates(
id int,
from_weight int,
to_wight int,
base_price int,
extra_price_per_500_g int
);
Insert Into tblRates (id,from_weight,to_wight,base_price,extra_price_per_500_g)
Values
(1,0,499,20,0),
(2,500,1999,40,0),
(3,2000,2147483647,40,20);
Declare @Weight int = 3300
Select
base_price + extra_price_per_500_g * CEILING((@Weight - from_weight)/500.0) price
From
tblRates
Where
@Weight BETWEEN from_weight AND to_wight;
我重新设计了您的表格,并将@Weight Decimal(7,3)
更改为@Weight int
(或者,您在使用之间遇到问题;请尝试@Weight = 1999.06查看错误。)