如果他们在一个月内获得索赔,我会尝试更新特定人员记录的数月,以减少他们的潜力。
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事务)。
有没有办法在不使用循环的情况下更新潜力?
答案 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;