2015-02-17 29 views
2

我對此有一個非常具體的問題。我知道我可以使用SUM來總結兩列的值,但是,除了運行基本查詢之外,還有一些其他需求需要處理。在SQL Server中添加兩個列值以填充第三列,這可以在沒有觸發器/存儲過程的情況下完成嗎?

  1. 第三列需要在表中存在,它將包含兩列的值。

  2. 無論何時創建行或更新其他列中的兩個值中的任何一個,都需要更新此第三列。

這可以通過設置列中的某個引用來更新其他兩列中的任何一列時的默認值來完成嗎?這將是最簡單的解決方案。或者,我是否需要一個觸發器/存儲過程組合,只要創建一行或更新這兩列中的一列,就會觸發並運行該組合?如果是這樣,我將如何去實施呢?

這是創建表:

CREATE TABLE [dbo].[haems_callLog] 
(
    [month] [int] NOT NULL, 
    [year] [int] NOT NULL, 
    [total] [int] NOT NULL CONSTRAINT [DF_haems_callLog_total] DEFAULT ((0)), 
    [station] [nvarchar](4) NOT NULL CONSTRAINT [DF_haems_callLog_station] DEFAULT (N'-'), 
    [station1_Total] [int] NOT NULL CONSTRAINT [DF_haems_callLog_station1_total] DEFAULT ((0)), 
    [station2_Total] [int] NOT NULL CONSTRAINT [DF_haems_callLog_station2_total] DEFAULT ((0)) 
) ON [PRIMARY] 

總字段默認爲 「0」。在創建記錄時,只有月份,年份,工作站以及station1_Totalstation2_Total列將被饋送數據。總列然後需要採取station1_Totalstation2_Total的值,並且除了另一個列的「0」默認值以總和值填充之外。

更新記錄時,可以更改這兩列中的任意一列,然後需要將其反映在總列中的總計值中。

在此先感謝您的幫助和指導!

回答

3

只要定義一個計算列這樣的:

ALTER TABLE [dbo].[haems_callLog] 
ADD GrandTotal AS [station1_Total] + [station2_Total] PERSISTED 

這增加了新的一列,這將始終反映這兩個其他列的總和 - 不管那些列包含。如果兩個基礎列中的任何一個被更新,這個新的計算列總是被更新。

+1

非常感謝!我絕對過度思考它! – livetoski78 2015-02-18 18:15:00

相關問題