我有兩個表。一張桌子實際上由日常事件組成,而另一張桌子只是另一張桌子的摘要。我有一個存儲過程,刪除每日表中存儲的值。現在每一次刪除後,彙總表也應該更新,以便SUM現在將被更新,而不是被刪除的值的更新。NULL值上的數據庫表更新錯誤
我的問題是,當日報表已經被清空,然後自動總結起來生成NULL值(因爲沒有條目在它裏面找到)。應用程序然後崩潰,因爲我的摘要表不應該包含NULL值。
如果可能的話,我怎麼能創建一個過程,這將使值0,如果SUM結果爲NULL?
查詢示例:
DELETE FROM Daily WHERE DailyID = @DailyID
SELECT @TotalA = SUM(o.OutA), @TotalB = SUM(o.OutB), @TotalC = SUM(o.OutB)
FROM Daily
WHERE Day = @Day
UPDATE Summary
SET MyA = @TotalA, MyB = @TotalB, MyC = @TotalC
WHERE SummaryID = @SummaryID
從以上我的查詢,讓我們說,我有我的日常表內共有10個條目。 2是週三的參賽作品,3是週五,5是週六的參賽作品。所以基本上,我的彙總表將有三個條目 - 每個星期三,星期六和星期五的摘要。
當我問我的程序刪除所有條目週三,則會有留下8個條目(無星期三)。因此,我必須更新我的摘要條目,說明所有星期三條目已被刪除。但是,我不希望我的彙總表忘記他有一個星期三。相反,我希望他保留星期三的條目,其中總摘要值爲零(0)。
我會使用'COALESCE',因爲它是標準的,適用於Oracle,Sql-Server,MySQL,... – 2010-10-17 12:24:44
正是我需要的!非常感謝你! – Smiley 2010-10-17 12:25:30
順便說一句,是的。它在SQL Server 2008中:) – Smiley 2010-10-17 12:25:48