[英]SQL Server : stored procedure challenge
这是场景:我在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值。 我需要提出一个流程,根据SunFlowerseeds
表中每个种子的Price
返回新价格,然后考虑矩阵的组合。
例如,如果黄矮星是无气的,高度> 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。
假设SunflowerSeeds中Color和SeedType的组合是唯一的:
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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.