0

シナリオは次のとおりです。SQLServer2008のテーブルがあり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. 無孔(はい/いいえ):はいの場合、価格を10%上げます
  2. 高さ(> 13 "):はいの場合、価格を8%上げます
  3. オーガニック(はい/いいえ):はいの場合、価格を15%引き上げます
  4. ライフサイクル(年間-はい/いいえ):はいの場合、価格を12%引き上げます

各データ挿入行は、上記の各マトリックスに対してYESまたはNOの値を持つ可能性があります。Priceテーブル内の各シードに基づいて新しい価格を返し、SunFlowerseeds行列の組み合わせをa/cに取り込むプロセスを考え出す必要があります。

たとえば、Yellow Dwarfが無極性で、高さが13インチを超え、Organic YESであり、年間ライフサイクルがある場合、新しい価格は次のように計算する必要があります。

10% + 8%+15%+12% = 45% = 1+ 0.45= 1.45 

次に、新しい価格は次のとおりです。 1.45 * Original Price= 1.45*20 = 29

残りの組み合わせについても同様です。

後でC#コードで呼び出すことができるように、SQLServerストアドプロシージャを作成することを考えています。ストアドプロシージャのi/pパラメータはとになりColorますSeedType。これらの2つのパラメーターを使用して、を取得できますPrice

Price課題は、適用可能なマトリックス(無孔、高さ、有機、ライフサイクル)の組み合わせを使用して、シードごとに新しいものをどのように計算するかです。誰かが私にそれを行う適切な方法を教えてもらえますか?親切に助けてください。TIA。

4

1 に答える 1

2

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

また、@ Polenless、@ Height、@ Organic、@Lifecycleの代わりにint型のビット単位のフラグを使用することもできます。

于 2012-09-24T02:29:13.427 に答える