2011-10-30 25 views
5

Şu anki durumumla ilgili bir sorun yaşıyorum, ağdaki herhangi bir çözümden aradım ama yine de alamıyorum. İşteSQL Server: dinamik sütunlu Sıcaklık Tablosu oluşturuluyor

soru: Ben tabloların her biri farklı bir veritabanından seçerek bir ekleme performans, iç imleci kullanarak yanı sıra bir saklı yordam içinde yürütülmesi gereken bir SQL tabloların bir grup var

tablo.

Örneğin

:

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

ve belki başka yürütülen SQL deyimi bu

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

Tamam, temelde benim süreci gibi iki SQL ifadeleri Yukarıdan bu

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

gibidir , benim çalıştırılan veritabanı2 veya 3 sonucu veya 4,5 ve benzeri olabilir benim veri tabanına gideceğim f veya kalıcı mağaza. Daha özet bir şekilde anlatmak gerekirse, sadece farklı bir veritabanı kaynağından elde edilen ve başka bir işlem yapmak için veri tabanımdaki yerel veri tabanımdaki veri başka bir kopyasını yapmak istiyorum.

Ana sorunum, sorumlu (veya yönetici) görevli, kalıcı olarak yürütülmeden önce tüm yürütülmüş sonuçları TEMP tablosuna veya #Table ürününe atmamı söyledi. Böyle

şey:

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

Ben #Temp tabloları bazı araştırmalara geçti ve bunu çoğu gibi

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

SORUN 'FIX' sütunla yaratıyor bulundu: var Her neyse dinamik sütunlarla oluşturmak için? Sormanın daha ayrıntılı bir yolu, sütun eklenmeden bir #Temp tablosuna seçerek eklemek için zaten var mı? Çünkü bu, çalıştırılan SQL'in her biri için bir grup geçici tablo oluşturmam imkansız.

size

PS 1 ederiz: Ben SQL Server oldukça deneyimsizim hatamı veya hata seslendirmeye çekinmeyin. Hepimiz hatalardan ders alıyoruz.

PS 2: Kötü İngilizce seviyem için üzgünüm, daha net bir şekilde detaylandırmak için elimden geleni yaptım.

Selamlar:

LiangCk

+2

Sen 'SELECT' sonuçlarına dayanan bir tablo oluşturmak için Database3.Table3' DAN # Tablo3 INTO coloum1, coloum2, coloum3, coloum4 SEÇ' kullanabilirsiniz. Demek istediğin bu mu? –

+0

Değil, bu gerekli değildir çünkü her biri farklı renk tonu olan birkaç yüz metrekare ile ilgilenebilir. Yaptığım şeyi yaparsam, bu birkaç yüz Temp tablosu yaratmam anlamına mı geliyor? – Worgon

+0

Neyi gerçekleştirmek istediğinizden emin değilim; Anladığım kadarıyla, farklı sütunlara sahip birkaç tablonuz var ve bu verileri geçici bir tabloya eklemeniz gerekiyor. Tüm veritabanının bir yedeğini ve geri yüklemesini geçici bir veritabanına dönüştüremez misiniz? Ya bu, ya da bir grup farklı sıcaklık tablolarını yönetmeniz gerekecek. –

cevap

5

Sen ilk sabit sütunlu geçici tablo oluşturmak zorunda kalmadan

 


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

 

gibi bir şey istediğini söylüyorsun.

 


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

 

sadece geçici tabloya seçmek, geçici tablo oluşturmak ya da ilk sütunları belirtmek gerekmez ve anında oluşturulacak:

Bu çalışacak.

bundan daha fazla bir şey yapmak istiyorum gibi oldukça ne olduğunu çözemiyorum ... geliyor, ama belki tek geçici tabloya çeşitli tablolardan tüm verilerinizi seçme gibi sesler (ı don Bunu neden yapmak istediğini bilmiyorum) ... Eğer durum buysa UNION veya UNION ALL çalışmalıdır. Bunları dinamik olarak oluşturulmuş geçici tablo ile kullanabilirsiniz.

 


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 

 

yukarıda null sadece 2 (Ben senin görevinden hem seçer kullanılır) ilk olarak aynı sayıda sütun seçmek vermektir; Bu, UNION için bir gereksinimdir.

+0

ya, teşekkürler Jeremy ... bu benim ihtiyacım olan şey .. – Worgon