以下是场景:我在SQL Server 2008中有一个SunflowerSeeds
表。
CREATE TABLE [dbo].[SunflowerSeeds](
[Color] [nvarchar](50) NULL,
[SeedType] [nvarchar](50) NULL,
[Price] float NULL
)
为简单起见,我没有插入长长的数据列表。
表格中的数据插入如下:
Insert into [dbo].[SunflowerSeeds] (Color, SeedType, Price)
SELECT 'Yellow', 'Dwarf', 20
UNION ALL
SELECT 'Brown', 'Garden', 30
UNION ALL
SELECT 'Red', 'Garden', 35
现在我已经提供了各种可以提高种子价格的矩阵。
每个数据插入行对上面列出的每个矩阵可以具有YES或NO值。我需要提出一个流程来根据Price
表中每个种子的SunFlowerseeds
返回新价格,并将矩阵组合纳入/ c。
例如,如果黄矮星是无生命的,高度> 13“,有机是,并且具有年度生命周期,然后新价格必须计算为
10% + 8%+15%+12% = 45% = 1+ 0.45= 1.45
然后新价格为:1.45 * Original Price= 1.45*20 = 29
同样适用于其他组合。
我正在考虑编写一个SQL Server存储过程,以便稍后可以在我的C#代码中调用它。存储过程的i / p参数为Color
和SeedType
。有了这两个参数,我就可以得到Price
。
挑战在于如何使用适用的矩阵组合计算每个种子的新Price
- Polenless,height,Organic,LifeCycle。任何人都可以指出我这样做的正确方法。请帮帮我。 TIA。
答案 0 :(得分:2)
假设向日葵种子中颜色和种子类型的组合是独特的:
CREATE PROCEDURE UpdatePrice
@Polenless BIT,
@Height BIT,
@Organic BIT,
@Lifecycle BIT,
@color NVARCHAR(50),
@seedType NVARCHAR(50)
AS
BEGIN
UPDATE SunflowerSeeds
SET Price = Price +
((Price * 0.1) * @Polenless)+
((Price * 0.08) * @Height)+
((Price * 0.15) * @Organic)+
((Price * 0.12) * @Lifecycle)
WHERE Color = @color AND SeedType = @seedType
END
GO
此外,您可以使用int类型的按位标志,而不是@Polenless,@ Height,@ Organic,@ Lifecycle。