2011-10-30 46 views
5

Tôi gặp sự cố với tình huống hiện tại của mình, tôi đã tìm kiếm qua bất kỳ giải pháp nào trên mạng nhưng vẫn không thể nhận được.Máy chủ SQL: tạo Bảng tạm thời với cột động

Ở đây câu hỏi:

tôi có một loạt các câu lệnh SQL mà cần phải được thực hiện trong một thủ tục lưu trữ bằng cách sử dụng con trỏ bên trong, mỗi người trong số các báo cáo được thực hiện một chèn bằng cách chọn từ một cơ sở dữ liệu khác nhau cũng như bàn.

Ví dụ:

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

và có lẽ một câu lệnh SQL được thực hiện giống như

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

Được rồi, về cơ bản quá trình tôi đây là như thế này

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

Từ trên hai câu lệnh SQL , kết quả thực thi của tôi từ cơ sở dữ liệu 2 hoặc 3 hoặc có thể là 4,5 và vv. Tôi sẽ chuyển đến cơ sở dữ liệu của tôi1 f hoặc cửa hàng vĩnh viễn. Nói tóm lại, đó là, tôi chỉ muốn tạo một bản sao dữ liệu khác lấy từ nguồn cơ sở dữ liệu khác nhau và lưu trữ vào cơ sở dữ liệu cục bộ của tôi để thực hiện thêm một số xử lý.

Vấn đề chính của tôi là người phụ trách (hoặc người quản lý) nói với tôi để trow tất cả các kết quả thực hiện vào một bảng TEMP hoặc #Table trước khi thực hiện vào vĩnh viễn.

Something như thế này:

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

tôi đã đi qua một số nghiên cứu trên #Temp bảng và tôi thấy nó hầu hết trong số họ đang tạo ra với cột 'FIX' như

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

VẤN ĐỀ: có anyway để tạo ra nó với các cột động? Thêm chi tiết cách yêu cầu, có anyway để chèn bằng cách chọn vào một bảng #Temp mà không có tiền tố cột? Bởi vì đó là không thể cho tôi để tạo ra một loạt các bảng tạm thời cho mỗi SQL thực hiện.

Cảm ơn bạn

PS 1: Tôi là người mới sử dụng SQL Server, vui lòng không nói ra lỗi hoặc lỗi của tôi. Tất cả chúng ta đều học hỏi từ những sai lầm.

PS 2: Xin lỗi vì trình độ tiếng Anh kém của tôi, tôi đã cố gắng hết sức để giải thích rõ hơn.

Trân:

LiangCk

+2

Bạn có thể sử dụng 'CHỌN coloum1, coloum2, coloum3, coloum4 VÀO # Table3 TỪ Database3.Table3' để tạo ra một bảng dựa trên kết quả của' SELECT'. Đó có phải là ý bạn không? –

+0

Không, điều này là không cần thiết vì nó có thể được đối phó với vài trăm sql có thể được mỗi người trong số họ là có coloum khác nhau. Nếu tôi làm những gì u thực hiện, điều đó có nghĩa là tôi tạo ra một vài trăm bảng Temp? – Worgon

+0

Tôi không chắc chắn những gì bạn muốn thực hiện; như tôi đã hiểu, bạn có nhiều bảng với các cột khác nhau và bạn cần chèn dữ liệu này vào bảng tạm thời. Bạn có thể không chỉ tạo bản sao lưu và khôi phục toàn bộ cơ sở dữ liệu vào cơ sở dữ liệu tạm thời không? Hoặc là, hoặc bạn sẽ cần phải quản lý một loạt các bảng tạm thời khác nhau. –

Trả lời

5

Bạn nói rằng bạn muốn một cái gì đó giống như

 


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

 

mà không cần phải tạo ra các bảng tạm thời với các cột cố định đầu tiên.

này sẽ làm việc:

 


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

 

Bạn không cần phải tạo ra các bảng tạm thời hoặc chỉ định các cột đầu tiên, bạn chỉ cần chọn vào bảng tạm thời và nó sẽ được tạo ra khi đang bay. Có vẻ như bạn muốn làm một cái gì đó nhiều hơn thế này ... Tôi không thể tìm ra nó là gì, nhưng có vẻ như có thể chọn tất cả dữ liệu của bạn từ nhiều bảng khác nhau vào một bảng tạm thời (tôi không 't biết lý do tại sao bạn sẽ muốn làm điều này) ... Nếu đó là trường hợp thì UNION hoặc UNION ALL sẽ hoạt động. Bạn vẫn có thể sử dụng chúng với bảng tạm thời được tạo động.

 


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 

 

Các null trên chỉ là để cung cấp cho 2 chọn cùng số cột như là người đầu tiên (tôi sử dụng cả hai lựa chọn từ bài viết của bạn); đây là yêu cầu cho UNION.

+0

ya, cảm ơn Jeremy ... đây là những gì tôi cần .. – Worgon

Các vấn đề liên quan