棘手的SQL更新

时间:2016-08-04 20:01:06

标签: sql sql-server sql-server-2008

我有一个棘手的更新。任何帮助都非常感谢。在此先感谢您的帮助。

这是附加图像上显示的场景。我必须从P_main.ver_key更新Versions.verkey P_main.ver_key,其中ver_key为空。逻辑是为pid获取Versions.pcmm <= max(P_main.vdmm) P_main。应在零点中填充的值显示在图像的“更新后”列中。

示例:

pid = 50000178 vcmm = 2014027001 表:

Versions

pid = 50000178 max pdmm <=2014027001 is 2014032000 表:

update ver_key = 154

因此

sameCenter = true;
google.maps.event.addListener(map, 'drag', function(){
  sameCenter = false;
});

sample data

1 个答案:

答案 0 :(得分:1)

这可能不是最快的方法,但它应该有效:

WITH CTE AS
(
    SELECT P.*, Q.ver_key ver_key_new
    FROM P_Main P
    CROSS APPLY(SELECT TOP 1 ver_key
                FROM Versions
                WHERE pid = P.pid
                AND vdmm <= P.vcmm
                ORDER BY vdmm DESC) Q
    WHERE P.ver_key IS NULL
)
UPDATE CTE
SET ver_key = ver_key_new;