2012-06-27 4 views
0

6I는 두 개의 테이블이, TABLEA :진보적 인 SQL UPDATE 문

MEMBER_ID CLIENT_ID TENTATIVE_ID TENTATIVE_START_DATE 
1 65239 26 6/15/2012 
2 63693 NULL NULL 
3 5549 NULL NULL 
4 85452 NULL NULL 
5 77898 11 6/15/2012 
6 93119 21 6/15/2012 
7 7876 26 6/20/2012 
8 27572 26 6/21/2012 
9 15524 26 6/21/2012 
10 39465 8 6/21/2012 
11 10143 26 6/23/2012 
12 72828 NULL NULL 

표 B :

TENTATIVE_ID LAST_AUTO_ASSIGNED_ON 
26 6/15/2012 
11 6/16/2012 
21 6/13/2012 
27 6/20/2012 
28 6/22/2012 
29 6/25/2012 
8 6/26/2012 
21 6/24/2012 

상황은 내가 테이블에서 TENTATIVE_IDs와 테이블 A에서 널 (null)를 업데이트 할 필요가있다 B 최소 LAST_AUTO_ASSIGNED_ON 값과 ID가 할당 될 때마다 LAST_AUTO_ASSIGNED_ON은 B 테이블의 해당 ID에 대한 현재 날짜 시간으로 업데이트됩니다.

이렇게하면 표 B의 모든 임시 ID를 반복하여 표 A에 할당합니다.

커서를 사용할 수 없습니다. 내가 어떻게 이걸 얻을 수 있니?

감사합니다.

+0

(last_auto_assigned_on, tentative_id 의해 TableB의 순서에서 상위 1 tableb.tentative_id 해당) 정확히 동일한 데이터를 TableB의 두 개의 행을 갖는다. 그 중 하나만 날짜를 업데이트 할 수는 없습니다. 필드가 누락 되었습니까? – Sean

+0

또한 최소 최종 자동 할당 날짜를 선택한 경우 동일한 최소 날짜가있는 여러 ID 중에서 어떤 기준을 결정해야합니까? – Sean

+0

또한 잠정 시작 날짜를 언급하지 않았으므로 할당해야합니다. – Sean

답변

1

업데이트 TABLEA 세트 tablea.tentative_id = tablea.tentative_id가 null

TableB의 업데이트가 TABLEA 에서 Tentative_start_date = GETDATE() (Last_auto_assigned_on, tentative_id 의해 TableB의 순서에서 상위 1 tableb.tentative_id 해당) 세트 last_auto_assigned_on GETDATE =() 여기서 tentative_id =

+0

이 작업은 쿼리를 실행할 때 동적으로 수행해야합니다. 따라서 각 삽입에 대해 최소한 Last_auto_assigned_on 날짜까지 테이블 B 순서에서 최신 최상위 ID를 가져와야합니다. – OBL

+0

어떤 쿼리입니까? 전에 삽입물을 언급하지 않았습니다. – Sean

+0

내 잘못, 나는 업데이 트를 의미. – OBL