【发布时间】:2016-08-05 16:47:47
【问题描述】:
表架构:
CREATE TABLE [dbo].[TblPriceDetails](
[PriceID] [int] IDENTITY(1,1) NOT NULL,
[VID] [int] NOT NULL,
TypeID int not null,
[RangeStart] [decimal](18, 3) NOT NULL,
[RangeEnd] [decimal](18, 3) NOT NULL,
[Price] [decimal](18, 2) NOT NULL,
[ExtraLoad] [decimal](18, 3) NULL,
[ExtraPrice] [decimal](18, 2) NULL
)
GO
样本数据
Insert into dbo.TblPriceDetails values (1,1, 0,0.250,10,0,0)
Insert into dbo.TblPriceDetails values (1,1, 0.251,0.500,15,0.500,15)
Insert into dbo.TblPriceDetails values (1,1, 3,5,40,1,25)
GO
Insert into dbo.TblPriceDetails values (1,2, 0,0.250,15,0,0)
Insert into dbo.TblPriceDetails values (1,2, 0.251,0.500,20,0.500,20)
Insert into dbo.TblPriceDetails values (1,2, 3,5,50,1,30)
GO
预期输出:
对于 VID = 1 和 TypeID = 1 以及给定值 0.300
- 由于输入单元介于 RangeStart 0.251 和 RangeEnd 0.500 之间 结果价格为 15
对于 VID = 1 和 TypeID = 1 以及给定值 0.600
- 根据 0.500 之前的数据,价格为 15,对于每个 extraLoad 高达 0.500 又是 15。所以最终价格将是 30
对于 VID = 1 和 TypeID = 1 和给定值 1.500
- 根据 0.500 之前的数据,价格为 15。每增加 0.500 它的另一个 15,所以对于剩余的 1 个单位,它将是 15 * 2。 最终价格为 45
对于 VID = 1 和 TypeID = 1 和给定值 5.5
- 根据 5.000 之前的数据,价格为 40。每多出 1 个单位,则再增加 25 个单位,因此最终价格为 65 个
在为此编写查询时需要帮助。与我的其他问题不同,我还没有一个查询来显示我到目前为止的想法。截至目前,我无法为此制定逻辑并提出通用查询。
【问题讨论】:
标签: sql-server-2012 sql-server-2008-r2 sql-server-2014