0

原価の列と小売価格の列がありますが、この列は原価 + 35% の計算フィールドなので、小売価格を自動的に更新する select ステートメントを書きたいのですが、方法がわかりません。手伝ってくれますか。

Cost Price      Retail Price
   35
   45
  125
   35

DECLARE @OrderNumber varchar (30)
DECLARE @OrderDate int
DECLARE @OrderLineNumber varchar(50)
DECLARE @CustomerSkey int
DECLARE @ProductSkey int
DECLARE @OrderMethodSkey int
DECLARE @Quantity int
DECLARE @Cost Decimal(18,3)


SET @OrderNumber = 1
SET @OrderDate = 0
SET @OrderLineNumber = 1
SET @CustomerSkey = 1
SET @ProductSkey = 1
SET @OrderMethodSkey = 1
SET @Quantity = 1
SET @Cost = 1


WHILE @OrderNumber <= 100
WHILE @OrderDate <= 100
WHILE @OrderLineNumber <= 100
WHILE @CustomerSkey <= 100
WHILE @ProductSkey <= 100
WHILE @OrderMethodSkey <= 100
WHILE @Quantity <= 100
WHILE @Cost <= 100



BEGIN
INSERT INTO Orders 
(OrderNumber
, OrderDate
, OrderLineNumber
, CustomerSkey
, ProductSkey
, OrderMethodSkey
, OrderTime
, Quantity
, Cost
, Price)

SELECT 
'ORD' + Right ('000000' + CAST (@OrderNumber AS varchar (30)), 6)
,DATEADD (day, CAST (RAND () * 1500 as int), '2008-1-1')
,(Right ('0' + CAST (@OrderLineNumber AS varchar (30)), 6))
,(99 * RAND()) + 1
,(99 * RAND()) + 1
,(2 * RAND()) + 1
,DATEADD(ms, cast(86400000 * RAND() as int), convert(time, '00:00'))
,(190 * RAND()) + 10
,(40 * RAND()) + 10
,@Cost + (@Cost * .35)



SET @OrderNumber = @OrderNumber + 1
SET @OrderDate = @OrderDate + 1
SET @OrderLineNumber = @OrderLineNumber + 1
SET @CustomerSkey = @CustomerSkey + 1
SET @ProductSkey = @ProductSkey + 1
SET @OrderMethodSkey = @OrderMethodSkey + 1
SET @Quantity = @Quantity + 1
SET @Cost = @Cost + 1


END
4

4 に答える 4

2

次の式を使用して計算列にします。

CostPrice + (CostPrice * .35)

そのため、テーブルに新しいエントリを挿入するたびに、CostPriceが自動的に評価されます。

于 2013-05-22T14:49:05.887 に答える
0
UPDATE Orders SET Price = Cost * 1.35

または、パーセントを変数にしたい場合:

UPDATE Orders SET Price = Cost * (1 + (@PERCENT / 100))
于 2013-05-22T14:48:57.090 に答える
0

小売価格が常にコスト価格に一定のパーセンテージを加えたものに等しい場合、計算列が適切かどうかを確認する必要があります。

計算列で定義されたテーブルの例を次に示します。

CREATE TABLE TableName ( 
    CostPrice DECIMAL(18,4), 
    RetailPrice AS (CostPrice * 1.35)
);

ただし、テーブル スキーマを定義または変更できない場合、または選択した行の小売価格を更新したいだけの場合は、CostPrice 列の値を使用して RetailPrice 列を更新できます。

UPDATE TableName SET RetailPrice = CostPrice * 1.35

行ごとに、CostPrice を使用して行の RetailPrice を設定します。WHEREテーブル内のすべての行を更新するのではなく、更新される行を制限する場合は、句を含めることもできます。

于 2013-05-22T15:03:31.537 に答える