2011-10-30 5 views
5

현재 상황에 문제가있어 인터넷의 모든 솔루션을 검색했지만 여전히 얻을 수 없습니다. 여기SQL Server : 동적 열을 사용하여 임시 테이블 만들기

질문 : 나는 문 각각 다른 데이터베이스에서 선택하여 삽입을 수행하고, 내부에 커서를 사용뿐만 아니라하여 저장 프로 시저에서 실행해야 할 SQL 문 무리가

표.

예를 들어

:

INSERT INTO Database1.Table1(column1, column2, column3) 
    SELECT column1,column2, column3 
    FROM Database2.Table2 
    WHERE --Some Condition 

어쩌면 다른 실행 된 SQL 문이

INSERT INTO Database1.Table3(column1, column2, column3, column4) 
    SELECT column1, column2, column3, column4 
    FROM Database3.Table3 
    WHERE --Some Condition 

좋아, 기본적으로 내 과정처럼 두 개의 SQL 문 이상에서이

Execute Sql to insert into temp Tables --> Insert into a permanent Table from Temp Tables 

같다 , database2 또는 3에서 내 실행 결과 또는 4,5 등 수 있습니다. 내 database1 f에 간다 또는 영구 저장소. 더 자세한 요약을하면, 다른 데이터베이스 소스에서 가져 와서 로컬 데이터베이스에 저장하여 추가 처리를 수행하는 또 다른 데이터 복사본을 만들고 싶습니다.

나의 주된 문제는 담당 임원 (또는 관리자)이 실행 된 모든 결과를 TEMP 테이블이나 #Table으로 집어 넣은 다음 영구적으로 실행하도록했다는 것입니다. 이 같은

뭔가 :

INSERT INTO #Table3(column1, column2, column3, column4) 
    SELECT column1, column2, column3, column4 
    FROM Database3.Table3 
    WHERE --Some Condition 

나는 #Temp 테이블에 대한 몇 가지 연구를 통해 가서 나는 그들의 대부분 같은

CREATE TABLE #Table 
(
    column1 VARCHAR(10), 
    column2 VARCHAR(10), 
    column3 VARCHAR(10) 
) 

문제는 'FIX'열이 생성됩니다 발견이 어쨌든 동적 열을 사용하여 생성 하시겠습니까? 더 자세한 방법을 묻는, 어쨌든 #Temp 테이블에 선택 항목을 삽입하려면 열을 접두사없이 있습니까? 왜냐하면 실행 된 SQL 각각에 대해 임시 테이블을 만드는 것이 불가능하기 때문입니다.

당신에게

PS (1) 감사 : 내가 SQL Server에 꽤 안돼서, 내 실수 또는 오류를 음성 주시기 바랍니다. 우리 모두는 실수로부터 배웁니다.

PS 2 : 영어 수준이 저조한 것에 대해 유감스럽게 생각합니다. 더 명확하게 설명하기 위해 최선을 다했습니다.

감사합니다 :

LiangCk

+2

당신은'SELECT'의 결과에 따라 테이블을 만들 Database3.Table3' FROM # 표 3 INTO coloum1, coloum2, coloum3, coloum4을 SELECT'사용할 수 있습니다. 이게 네가 말하는거야? –

+0

아닙니다. 각각 다른 coloum을 가질 수있는 몇 백 개의 SQL을 처리 할 수 ​​있기 때문에 이것은 필요하지 않습니다. 내가 무슨 짓을하는지, 그건 내가 몇백 가지의 임시 테이블을 만드는 것을 의미합니까? – Worgon

+0

성취하고자하는 것이 확실하지 않습니다. 이해할 수있는 것처럼 여러 열이있는 여러 테이블이 있으며이 데이터를 임시 테이블에 삽입해야합니다. 전체 데이터베이스를 임시 데이터베이스로 백업하고 복원 할 수 있습니까? 어느 쪽이든, 아니면 다른 임시 테이블을 관리해야합니다. –

답변

5

당신은 당신이 먼저 고정 열 임시 테이블을 만들 필요없이

 


INSERT INTO #Table3(coloum1,coloum2,coloum3,coloum4) 
Select coloum1,coloum2,coloum3,coloum4 
FROM Database3.Table3 
WHERE --Some Condition 

 

같은 것을한다고 말한다.

 


Select coloum1,coloum2,coloum3,coloum4 
INTO #Table3 
FROM Database3.Table3 
WHERE --Some Condition 

 

당신은 단지 임시 테이블로 선택하고 임시 테이블을 만들거나 먼저 열을 지정할 필요가 없습니다 그것은 즉시 생성됩니다 :

이 작동합니다.

당신은 이보다 더 많은 것을하고 싶다. 나는 그게 무엇인지 알 수는 없지만 여러 테이블의 모든 데이터를 하나의 임시 테이블로 선택하는 것처럼 들린다. 왜 당신이 이것을하고 싶어하는지 알지 못한다.) ... 그렇다면 UNION 또는 UNION ALL가 작동해야한다. 동적으로 생성 된 임시 테이블에서 이들을 계속 사용할 수 있습니다.

 


Select coloum1,coloum2,coloum3,coloum4 
INTO #Table3 
FROM Database3.Table3 
WHERE --Some Condition 

UNION 

Select column1, column2, column3, null 
FROM Database1.Table1 
WHERE --Some condition 

 

위의 null은 2가 (내가 귀하의 게시물에서 모두 선택을 사용) 처음에 같은 수의 열 선택 제공하는 것입니다; 이는 UNION의 요구 사항입니다.

+0

예, 감사합니다. Jeremy ... 이것은 내가 필요한 것입니다. – Worgon

관련 문제