1
我試圖從包含多次出現accountID的表中更新一個唯一accountID的表。因此,例如,我在表B中有accountID 1一次,而在表A中有accountID 1發生5次。如果When不爲真,則什麼也不做的Case語句
所以基本上,我要從多行更新到一行,所有的數據在這一行上。
實施例:
表A具有每帳戶ID
accountID site hard soft
1 12 20 0
1 13 30 10
1 14 40 0
我需要更新,只有具有帳戶ID,沒有其他數據表B的多個記錄。看起來像這樣:
accountID site12_hard site12_soft site13_hard site13_soft site14_hard site14_soft
1
因此,我關聯accountID和所有字段的case語句。就像這樣:
update table B set
site12_hard = case when site = 12 then hard else 0 end,
site12_soft = case when site = 12 then soft else 0 end,
from table A inner join table B on accountID = accountID
這是不工作的權利,因爲一對多鏈接帳戶ID導致case語句,以評估該帳戶ID的每一次出現。所以它可能在site12_hard上正確更新,但當它移動到下一個accountID = 1的記錄時,它不再是site = 12,因此它更新爲零。
如果「when」不正確,我需要case case語句不做任何事情的方法。或者我需要一個完全不同的方法來更新此表。
感謝您編輯此貼。我無法弄清楚如何製作表格示例。 – 2014-11-04 16:39:30
您不希望使用WHERE條款更新過濾器行,或者將列設置爲等於自身(即當前值,無變化)。 – Yuck 2014-11-04 16:40:32
使用'..當12然後硬其他site12_hard ...'。 – Andrew 2014-11-04 16:41:23