根据额外的重量计算运费

时间:2017-07-15 07:54:54

标签: sql sql-server stored-procedures

我目前正在为运输公司设计发票的数据库。 我卡住的地方是如何计算超出人数限制的费率。

我有一个名为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

1 个答案:

答案 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查看错误。)