2011-12-19 11 views
1

我是新來的SQL(腳本)。單個CRUD命令沒有問題,但我試圖創建一個存儲過程,使用來自同一選定表的結果更新帶有計算值的表。更新與使用結果集計算值選擇相同的表

在表格中,每個員工的總休假時間和上一年的虛擬工時的其餘值都有一個值。

我將嘗試實現的是將今年的新時間添加到剩餘的小時數。有一個捕獲。新的小時數欄是整個小時,剩餘小時數是'蜱'中的數值,爲數百納秒。

如何使用相同的表格作爲此計算的參考更新表格?

example table: 
employee, vacation, remainingvacation 

new value of remainigvacation = vacation(in hours) * 60(minutes) * 60(seconds) * 10^9 (to convert to ticks) + remainingvacation (in ticks) 

回答

3
UPDATE 
    myTable 
SET 
    remainingvacation = (vacation * 60 * 60 * POWER(10, 9)) + remainingvacation 

然後,您可以做同樣的,包括以後的聯接和WHERE子句...

UPDATE 
    myTable 
SET 
    remainingvacation = (vacation * 60 * 60 * POWER(10, 9)) + remainingvacation 
FROM 
    myTable 
INNER JOIN 
    yourTable 
    ON myTable.id = yourTable.id 
WHERE 
    yourTable.value = 'Egyptian Holidays' 
+0

錯誤:算術溢出錯誤將表達式轉換爲數據類型爲int。 發生這種情況時,刪除冪函數時使用bigint – 2011-12-19 12:49:44

+0

,並且使用正常數字al進行得很順利。 – 2011-12-19 13:40:08

+0

@LuukKrijnen:用'CAST(vacation AS bigint)'或'CAST(60 AS bigint)''替換'60's中的'vacation'。 – 2011-12-19 13:40:18