2010-01-27 71 views
0

我有一個表中有一個字段,稱之爲「分數」。 是否可以編寫一個採用每個「分數」字段中的值的SQL,在公式中輸入值,然後將公式的輸出寫入另一個字段。 我沒有經驗在SQL中使用公式,我不知道它是否可能。 任何基本的例子,如果它可行的話,將會有所幫助。示例使用公式的SQL Server SQL

回答

0

非常模糊的問題,但這裏是一般的想法。

UPDATE MyTable的SET FormulaOutput = HomeScore + AwayScore

這個 「公式」,只是增加了2分在一起

我想你也可以計算出 「傳播」 是這樣的:

UPDATE MyTable SET Spread = MAX(HomeScore,AwayScore) - MIN(HomeScore,AwayScore)

+0

感謝所有......不知道這是可能的,我接受了最低分的人,希望沒關係,因爲所有的回答都很棒,謝謝你 – bmw0128 2010-01-27 22:34:42

1

是的,這是可能的,但幾乎總是你不想將計算的字段存儲在數據庫中,因爲這意味着你的數據庫沒有正確的規範化。

而是通過在select語句中包含額外的派生列來查詢它時計算值。

這是一個例外,如果您需要做一個耗時的計算,在這種情況下您可能想要將派生值存儲在數據庫中。一個好的方法是使用觸發器在其中一個輸入發生變化時更新值,或者在定時間隔上運行一個過程以更新整個表中的所有派生值。

+2

計算列可以是持久的,並且索引視圖也是。我不會使用觸發器來確保數據的完整性/一致性。 – Lucero 2010-01-27 22:28:40

+0

這當然是一個選項,但您應該注意,計算列只能使用同一個表中其他列中的值,並且不能包含子查詢。 http://msdn.microsoft.com/en-us/library/ms191250.aspx我指的是'耗費時間的計算',在我看來,它至少暗示*一個子查詢,可能更多。您是否有其他耗時的計算,不需要子查詢?你能給個例子嗎? – 2010-01-27 22:35:40

1
UPDATE OrderLine SET 
TotalPrice = UnitPrice * Quantity 

就是這樣。