繁体   English   中英

SQL Server:存储过程挑战

[英]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

现在我已经提供了各种可以提高种子价格的矩阵。

  1. Polenless(是/否):如果是,将价格提高10%
  2. 高度(> 13“):如果是,则将价格提高8%
  3. 有机(是/否):如果是,将价格提高15%
  4. 生命周期(年度 - 是/否):如果是,则将价格提高12%

每个数据插入行对于上面列出的每个矩阵可以具有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参数将是ColorSeedType 有了这两个参数,我就能得到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM