我有一个具有以下结构的表:
id - int
from - float 1 dec(km's)
till - float 1 dec(km's)
price float 2 dec
带值
(1, 0, 9.9, 15),
(2, 10, 19.9, 11),
(3, 20, 24.9, 7)
我需要的是计算总结的价格
所以,让我们说你旅行了23公里 你的前9.9公里将是15欧元/公里 你的10-19.9公里将是11eu / km 你的最终公里将是7eu / km
因为我不知道这张桌子会容纳多少行,我怎样才能制作一个能为我解决价格的功能或SP?
价格将是: (9.9 - 0)* 15 + (19.9 - 10)* 11 + (3.2 * 7)
答案 0 :(得分:3)
您可以使用以下查询来计算预定义公里数的总价格:
DECLARE @km INT = 23
SELECT SUM(IIF([to] < @km, [to] - [from], @km - [from]) * price)
FROM mytable
WHERE [from] <= @km
<强>解释强>
以下查询:
DECLARE @km INT = 23
SELECT IIF([to] < @km, [to] - [from], @km - [from]) AS km, price
FROM #mytable
WHERE [from] <= @km
产生以下输出:
km price
=========
9,9 15
9,9 11
3 7