在CREATE TABLE或ALTER TABLE语句中定义的列可以源于独立的或者基于列的计算。如果需要在相关查询中对相同的数据重复计算,则计算列就变得很有用。计算列以创建表或修改表的时候定义的表达式为基础,除非使用了PERSISTED关键字,否则计算列不会物理保存在表中。
下面说明使用SQL Server 2005的PERSISTED选项的方法。通过CREATE或ALTER TABLE增加一个计算列的语法如下:
column_name AS computed_column_expression
[PERSISTED]
column_name是新列的名字。computed_ column_expression是你为了得到列的值而执行的计算。增加PERSISTED关键字能让计算的结果被物理保存。
1.向既有表中加了一个新的计算列:
USE AdventureWorks
GO
ALTER TABLE Production.TransactionHistory
ADD CostPerUnit AS (ActualCost/Quantity)
2. 查询数量超过1O的最高的CostPerUnit:
USE AdventureWorks
GO
SELECT TOP 1 CostPerUnit,Quantity,ActualCost
FROM Production.TransactionHistory
WHERE Quantity>10
ORDER BY ActualCost DESC
下一个创建一个PERSISTED计算列,这意味着计算后的数据实际上会物理地保存在数据库中&#