2013-10-05 3 views
0

다른 테이블에서 레코드의 번호를 추가, 테이블을 업데이트하고 모든, 기본 키로 (내 문제를 내가 열 ID가 포함 된 표를 가지고SQL : 여기에 내가 SQL 서버 2008 Management Studio를 사용하고

입니다 그들을 구별)과 합의 :

ID .... 
------------  
1 
1 
2 
3 
이 외에도

ID SUM 
--------  
1 10 
2 5 
3 5 

나는 (기본 키 이번에 열 ID를 포함하는 표 2는 중요하지 다른 열을 스스로 반복) 및 수있다

내가 뭘 하려는지, 각 id가 table2에 나타나는 시간에 따라 table1에서 SUM을 업데이트하는 절차를 작성하고 있으므로 기본적으로 id = 1에 대한 합계는 2로 증가하고 id = 2에 대해서는 incremened됩니다. 하나

이하여 각 3 내가 테이블 1에서 하나의 레코드를 업데이트하려고 쓴 것입니다 (그리고 나는 그것을 각 ID에 대해 3 회 반복 것이다) :

update T1 
set T1.sum=T1.sum+ 
(select count(T2.id) from T2) 
from table1 T1 
inner join table2 T2 on T2.id=T.id 
where T1.id=1 
and T2.id=1 

을하지만 난 받고 있어요 프로 시저를 실행할 때 오류가 발생합니다. Invalid object name 'T2'.

table2을 여기에 변경하면 (select count(T2.id) from table2), 프로 시저를 생성하는 동안 또 다른 오류가 발생합니다. An aggregate may not appear in the set list of an UPDATE statement.

내 구체적인 시도는 무엇입니까? 한 쿼리에서 3 행을 모두 업데이트하는 방법이 있습니까?

답변

0

Update T1 
Set sum = sum + 
    ( Select Count(*) 
     From T2 
     Where T2.ID = T1.ID 
    ) 
시도