2012-03-08 2 views
-1

의 SUM과 한 테이블에있는 필드 :UPDATE I에 의해 다른 테이블에있는 필드의 또 다른 세트의 SUM에 테이블에 필드의 값을 설정하기 위해 노력하고있어 다른

UPDATE table1 
SET fieldToUpdate = 
(
    SELECT SUM(fieldToSum) FROM table2 
) 
WHERE thirdField = 'A' 

하지만 운이 없다고. 조인을 사용하는 예제가 많이 있지만 두 테이블은 어떤 식 으로든 관련이 없습니다.

주셔서 감사 테이블이 관련이없는 것처럼

+0

와트 오류가 발생합니까? – Teja

+1

또는 어떤 오류가 발생합니까? 즉, "운이 없다"는 것은 무엇을 의미합니까? –

+0

오류가 발생하지 않습니다. 이전 값 (NULL)에서 값을 업데이트하지 않습니다. – tptcat

답변

0

, 내가 그 열의 너비를 초과 한 값으로 fieldToUpdate을 업데이트하려고 시도했습니다. 모두의 도움에 감사드립니다.

1

, 그것은 당신이 이미 작업을해야 무엇을 쓸 것 같습니다. fieldToUpdate = 'A'인 table1의 모든 행은 table2의 모든 fieldToSum의 합계로 설정된 fieldToUpdate의 열을 갖습니다. 어쩌면 당신은 더 나은 대답을 위해 당신의 질문을 명확히 할 수 있습니까? 마찬가지로, 정확히 무엇을지고있는 문제 나 샘플 데이터 세트이며, 결과는 예상

UPDATE : 이전 값이 NULL 인 경우 새로운 의견을 바탕으로

, 다음 fieldToUpdate = [ANY VALUE] 같은 일을하면 결과가 더 반환되는 행 fieldToUpdate IS NULL을 사용해야합니다. 또는 다음과 같이하면 =을 보관할 수 있습니다. ISNULL(fieldToUpdate, 'A') = 'A'.

마지막으로, 디버깅 수단으로 업데이트 후 @@ROWCOUNT을 검사하여 IS NULL이 필요하다는 것을 확인할 수 있습니다. 서브 쿼리가 작동해야하지만

+0

귀하의 의견을 바탕으로 가능성을 반영하여 답변을 업데이트했습니다. –

+0

저스틴 - 원래 질문을 수정했습니다. 내 원래 질문 (비록 내 원래 코드에서) 잘못된 열 이름을 참조하고 있었다. 아래 내 의견은 내 문제에 대한 최종 답변입니다. 당신의 도움을 주셔서 감사합니다. – tptcat

4

, 당신은 이런 식으로 그것을 깰 수 :

위 내 댓글에 명시된 바와 같이
DECLARE @s INT; 

SELECT @s = SUM(fieldToSum) FROM dbo.table2; 

UPDATE dbo.table1 
SET fieldToUpdate = @s 
WHERE fieldToUpdate = 'A'; 
관련 문제