SQL中的数量折扣

时间:2016-04-07 11:50:08

标签: sql sql-server tsql stored-procedures

我有一个具有以下结构的表:

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)

1 个答案:

答案 0 :(得分:3)

您可以使用以下查询来计算预定义公里数的总价格:

DECLARE @km INT = 23

SELECT SUM(IIF([to] < @km, [to] - [from], @km - [from]) * price)
FROM mytable
WHERE [from] <= @km

Demo here

<强>解释

以下查询:

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