2017-12-21 34 views
1

그래서 여기서는 열 거리를 업데이트하려고 시도하는 문제가 있습니다. 먼저 각 ownerID에 대한 거리를 합한 다음에 동일 ID는이SQL UPDATE 두 개의 동일한 값이있을 때 하나의 열을 0.000과 동일하게 설정하십시오.

enter image description here

지금까지이 코드

를 사용하여 거리를 계산 첫 번째 부분을했던 예상 된 결과 첫 번째 기록은 기억 너를 거리와 두 번째는 0.000

해야합니다 해결

UPDATE Action_Distance 
SET [distance]=(SELECT sum([distance]) 
       FROM Action a2 
       WHERE [name]='travel' and a2.ownerID = Action_Distance.ownerId 
       ) 

       WHERE [name]='drive_through' 

어떻게해야하는지 이해할 수 없습니다.

답변

0

이 방법으로 사용할 수있는 NOT EXIST 하위 쿼리와 CASE 표현 함께 다음 id_action 각 행에 대해 고유이라고 가정 :

대답이다
UPDATE Action_Distance A 
SET [distance] = CASE 
        WHEN NOT EXISTS (SELECT 'anything' 
            FROM Action_Distance B 
            WHERE B.[name] = 'drive_through' 
             AND a.ownerId = b.ownerId 
             AND a.id_action > b.id_action) 
         THEN (SELECT SUM([distance]) 
          FROM Action a2 
          WHERE [name] = 'travel' 
           AND a2.ownerID = a.ownerId) 
         ELSE 0 
       END 
WHERE 
    [name] = 'drive_through' 
+0

당신에게 많이 감사합니다. – johnnyReed