2012-10-31 28 views
0

我有一個Equipment表中的SQL Server 2008是這樣的:如何定義像這樣的計算列?

CREATE TABLE [dbo].[Equipment](
[EquipmentID] [nchar](10) NOT NULL, 
[EquipmentName] [nchar](50) NOT NULL, 
[ProducedDate] [date] NOT NULL, 
[WarrantyPeriod] [int] NOT NULL, 
[SerialNumber] [nchar](20) NOT NULL, 
[BrandID] [tinyint] NOT NULL, 
CONSTRAINT [PK_Equipment] PRIMARY KEY CLUSTERED 
) 

我想有一個計算列WarrantyStatus這將返回Unexpired或計算時,基於列ProducedDateWarrantyPeriodExpired

這是不對的,但它是什麼,我想:

ALTER TABLE [dbo].[Equipment] 
ADD [WarrantyStatus] AS IIF(DATEDIFF(MONTH, [ProducedDate], GETDATE()) < [WarrantyPeriod], "Unexpired", "Expired") 
+0

注意,這裏使用了時鐘可能不同步與您的Web服務器的時鐘服務器。可能會導致邏輯故障。 – usr

回答

2

嘗試:

ALTER TABLE [dbo].[Equipment] 
ADD [WarrantyStatus] AS 
case when DATEDIFF(MONTH, [ProducedDate], GETDATE()) < [WarrantyPeriod] 
then 'Unexpired' 
else 'Expired' 
end 
+0

太棒了,我試過這種方式,但似乎我錯了它的語法。非常感謝:D – user1789721

相關問題