每个记录有多个更新的SQL更新

时间:2016-07-19 20:05:13

标签: sql sql-server

如果他们在一个月内获得索赔,我会尝试更新特定人员记录的数月,以减少他们的潜力。

UPDATE M 
SET POTENTIAL_HITS = POTENTIAL_HITS - 1  
FROM #TEMP_CDC_MEMBERS M 
INNER JOIN #TEMP_CDC_CLAIMS C ON M.CIN = C.CIN AND C.MEASURE_INDICATOR = M.SUB_MEASURE
WHERE M.MOE > C.MOE

MOE是 201607 格式的月份字段。

我遇到的问题是如果一个月内有一个点击,那么差异将在下个月被忽略(由于SQL事务)。

有没有办法在不使用循环的情况下更新潜力?

1 个答案:

答案 0 :(得分:1)

您的问题是update没有执行累积更新 - m中每条记录只有一次更新。我认为你可以使用cross apply

做你想做的事
UPDATE M 
SET POTENTIAL_HITS = POTENTIAL_HITS - c.cnt
FROM #TEMP_CDC_MEMBERS M CROSS APPLY
     (SELECT COUNT(*) as cnt
      FROM #TEMP_CDC_CLAIMS C 
      WHERE M.CIN = C.CIN AND C.MEASURE_INDICATOR = M.SUB_MEASURE AND M.MOE > C.MOE) c;