2013-06-07 4 views
0

다른 select 문으로 채울 것이므로 임시 테이블 (@temptable)을 만들었습니다.두 테이블의 데이터로 임시 테이블 업데이트

내가 5 개 행이있는 테이블 호출 한 책 : 수를 얻을

...... | total_books | title | BookCode | CountOfBook 
-------|-------------|-------|----------|------------- 
...... |  4  | Once | 00 | {null} 
...... |  4  | Once | 00 | {null} 
...... |  4  | Once | 00 | {null} 
...... |  4  | Once | 00 | {null} 
...... |  4  | Once | 00 | {null} 
...... |  4  | Once | 00 | {null} 
...... |  4  | Four | 02 | {null} 
...... |  4  | Four | 02 | {null} 

그리고 제가하고 싶은된다

BookNum | BookDesc | BookDate | ...... 
---------|----------|----------|-------- 
00  | A sto... | 6/6/2013 | ...... 
00  | {null} | {null} | ...... 
02  | The t... | 6/6/2013 | ...... 
00  | {null} | 6/6/2013 | ...... 
02  | {null} | 6/6/2013 | ...... 

내 TEMPTABLE는 BookNum을 포함하는 열이 날짜가 null이 아닌 books 테이블의 특정 책에 대해 얼마나 많은 책을 가지고 있고 그것을 @temptable에 대한 CountOfBook 열에 넣었지만 알아낼 수는 없습니다. 그것은 다음과 같아야합니다

...... | total_books | title | BookCode | CountOfBook 
-------|-------------|-------|----------|------------- 
...... |  4  | Once | 00 |  2 
...... |  4  | Once | 00 |  2 
...... |  4  | Once | 00 |  2 
...... |  4  | Once | 00 |  2 
...... |  4  | Once | 00 |  2 
...... |  4  | Once | 00 |  2 
...... |  4  | Four | 02 |  2 
...... |  4  | Four | 02 |  2 

을 날짜가 null가 아닌 경우 각 책의이 있기 때문에.

답변

2

이 시도, 당신은 업데이트 문에서 하위 쿼리를 사용할 수 있습니다 - 당신은 -

update tempTable t 
    set CountOfBook = (select count(*) as CountOfBook_2 
         from Books 
         where BookData is not null 
         Group by BookCode 
         having BookCode=t.BookCode); 

sqlfiddle 예를 도움이됩니다 -> 오라클에게 11g =>fiddle

업데이트 사용 :를 사용해보기 : link referred

update tempTable 
    set CountOfBook = (select count(*) as CountOfBook_2 
         from Books 
         where BookData is not null 
         Group by BookCode 
         having BookCode=t.BookCode) 
    FROM tempTable as t; 
+0

이 경우 "Incorrect syntax new 't'"가 표시됩니다. 나는 @temptable로도 바꿨다. – rjbogz

+0

업데이트 해 주셔서 감사합니다! – rjbogz