2016-11-23 44 views
0

我是SQL Server的新手。我列有產品價值的列,現在我想在同一張表上添加列值+稅(稅額= 10%值)。任何建議如何以最快的方式做到這一點,或者我應該1插1?我能否複製價值欄並添加一些數學?如果我能做到這一點,有人可以展示它是如何工作的?謝謝。使用數學SQL Server複製列

+0

用'Self join'運行'Update'查詢來更新數據。 –

+4

您可能根本不想添加這樣的計算列,因爲稅率可能會在某個時候發生變化。 –

回答

0

如果稅收始終是相同的,你可以使用一個計算列:

alter t add value_plus_tax as (value * 1.1); 

此計算時,你需要它的價值。否則,你應該明確地添加列和更新:

alter t add value_plus_tax decimal(10, 2); -- or whatever 

update t 
    set value_plus_tax = value * 1.1; 
0

如果你的稅率可以改變,你可以存儲在一個單獨的表的速度和使用聯接兩個表來獲取數據的視圖.. 。

CREATE TABLE TaxRate (
    [Percent] TINYINT 
) 

GO 

CREATE VIEW ValuesWithTax AS 
SELECT *, [Value] * [Percent]/100 ValueWithTax FROM [Values] 
CROSS JOIN TaxRate 
0

如果稅率是不是一個固定值,你可以添加一列,以節省稅率和計算列

ALTER TABLE table1 add tax_rate decimal(19,4) DEFAULT(0.1) WITH VALUES 
ALTER TABLE table1 add toatal_value as ([value](1+tax_rate)) 
0

添加計算列節省總價值一樣(讓所有的計算) 。

即:下面的例子我已經考慮了價值和稅收的總和,你可以做任何計算(確保計算不應該拋出異常考慮邊界條件)。

 ALTER TABLE dbo.tableName ADD RetailValue AS (value+tax); 

你也可以使它保持計算列。