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