2014-03-31 4 views
0

단어를 사용하여 달성하려는 내용을 설명하기가 힘듭니다 ...기존 데이터를 기반으로 새로운 데이터를 동적으로 생성

여기 두 테이블을 사용하고 있습니다. 하나는 unqiue 참조가있는 고객 목록이 있습니다. 두 번째는 참조로 고객과 연결된 일반 데이터를 보유하는 테이블 (datatable)입니다.

내가 원하는 것은 데이터 테이블의 기존 행을 복사하고 고객 참조를 모든 고객으로 대체하는 것입니다.

예.

CustomerTable 
ID, Name, Address 
001, ABC, ABC 
002, DEF, DEF 
003, GHI, GHI 

DataTable (before) 
ID, Detail1, Detail2, Detail3 
001, A, B, C 
001, D, E, F 
001, G, H, I 

DataTable (after) 
ID, Detail1, Detail2, Detail3 
001, A, B, C 
001, D, E, F 
001, G, H, I 
002, A, B, C 
002, D, E, F 
002, G, H, I 
003, A, B, C 
003, D, E, F 
003, G, H, I 

이렇게하면 수천 개의 행이 업데이트되므로 가장 효율적인 방법이 무엇인지 알 수 없습니다. 프로그래머처럼 배열과 루프를 사용하고 싶지만 T-SQL에서는이 방법이 최선의 방법이 아닙니다.

답변

2

SQL에서 실제로 교차 결합 된 결과 집합을 찾고 테이블로 만들 수 있습니다. 귀하의 예를 바탕으로

:

SELECT CustomerTable.ID, DataTable.Detail1, DataTable.Detail2, DataTable.Detail3 
INTO New_DataTable 
FROM CustomerTable 
CROSS JOIN DataTable 

이 올바른 데이터를 새 테이블 (New_DataTable)를 생성합니다. 그런 다음 이전 테이블의 이름을 바꾼 다음 새 테이블의 이름을 원래 이름으로 바꿀 수 있습니다. 이렇게하려면 sp_rename 저장 프로 시저를 사용할 수 있습니다.

sp_rename DataTable, Original_DataTable 
sp_rename New_DataTable, DataTable 

스위치 아웃을 수행하기 위해 기존 데이터 테이블을 업데이트 할 사람이 아무도 없을 것이라는 것을 보증해야합니다.

+0

이것은 완벽합니다. 나는 당신의 모범을 기반으로하고 필요에 따라 일할 수있었습니다. 아직도해야 할 일이 많지만 올바른 길로 나를 인도 해주었습니다. 고맙습니다. – totalfreakingnoob

관련 문제