2013-07-29 4 views
0

나는 모든 것을 검색하여 공백을 찾아 냈습니다. 하나의 레코드를 업데이트하고 다른 테이블의 조건에 따라 하나의 테이블에 다른 레코드를 삽입하려고합니다. 두 테이블에는 공통 RecordID (문자가 포함 된 nvarchar)가 있습니다.다른 테이블의 조건에 따라 테이블에 새 레코드를 삽입하십시오.

가 영어로 설명하는 가장 쉬운 : 기록 ID1은 COLUMNA 및 COLUMNB와 ColumnC에 값이있는 경우

  • TableA의 에
  • 그런 다음, TableB의에서, TableA.ColumnA
  • 의 값으로 ColumnBla를 업데이트
  • 그런 다음 새 레코드를 삽입하고 레코드 ID1, 의 모든 필드를 복사 한 다음 충분한 수를 'A'를 RecordID에 추가합니다.
  • 그런 다음이 새 레코드에서 의 값으로 CollumnBla를 업데이트하십시오 TableA.ColumnC의 값에 대한 또 다른 새 레코드와 TableA.ColumnB
  • 반복

이 기록은 COLUMNA 및 COLUMNB에 값을 가지고 다른 조건은 아니지만 ColumnC 등의 경우 하나의 새로운에서 레코드를 추가 할 필요가 있지만 워시에서 나옵니다.

+0

TableB의 구조를 설명 할 수 있습니까? – Gidil

+3

스키마를 덤핑하고 바이올린을 설정하는 것은 어떻습니까? – OzrenTkalcecKrznaric

답변

1

select 쿼리로 insert를 사용하여 테이블에 값을 삽입 할 수 있습니다.

시나리오에 대한 쿼리는 다음과 같습니다.

 create table @RecordsUpdated(RecordID nvarchar(max)) 

    update t 
    set ColumnBla = TableA.ColumnA 
    output 
     inserted.RecordID 
     into @RecordsUpdated 
    from 
     TableB 
     inner join TableA on TableB.RecordID = TableA.RecordID 
    where 
     TablesA.ColumnA is not null 
     and TablesB.ColumnA is not null 
     and TablesC.ColumnA is not null 

    insert into TableB(RecordID, ColumnBLa) 
    select TableA.RecordID + 'A', ColumnB 
    from 
     TableA 
     inner join @RecordsUpdated on @RecordsUpdated.RecordID = TableA.RecordID 

    insert into TableB(RecordID, ColumnBLa) 
    select TableA.RecordID + 'A', ColumnC 
    from 
     TableA 
     inner join @RecordsUpdated on @RecordsUpdated.RecordID = TableA.RecordID 
+0

그것은 훌륭합니다, 감사 Vasanth. 모든 필드를 가져 오기 위해 비트를 추가해야하지만 그렇지 않으면 시도해 보았습니다. 나는 방법을 생각하기 시작했지만, 그렇게 쉬운 것은 아니 었습니다. –

관련 문제