2012-09-07 10 views
60

Mam kwerendę SQL (SQL Server) i generuje raporty, chcę przechowywać ten dokładny raport w tabeli temp, dzięki czemu mogę grać z nim później. Teraz pytanie, czy muszę najpierw utworzyć tabelę tymczasową, a następnie zapisać w niej wynik zapytania SQL, czy istnieje sposób dynamicznego tworzenia tabeli i zapisywania wyników zapytania?Jak wstawić wynik zapytania SQL do tabeli temp?

Odpowiedz

96

Spójrz na SELECT INTO. Spowoduje to utworzenie dla ciebie nowej tabeli, która może być tymczasowa, jeśli chcesz, dodając przed nazwą tabeli znak funta (#).

Na przykład, można zrobić:

SELECT * 
INTO #YourTempTable 
FROM YourReportQuery 
+2

Pożyczone z innego wątku, '# yourtemptable' nie musi być najpierw tworzone. – JFA

+0

To nie zadziała i spowoduje błąd jako Niepoprawna składnia w pobliżu słowa kluczowego "WYBIERZ", jeśli YourReportQuery jest kwerendą, a nie tabelą bazy danych. –

21

Można użyć select ... into ... do tworzenia i wypełnić tabelę temp, a następnie kwerendy tabeli temp powrotu wynik.

select * 
into #TempTable 
from YourTable 

select * 
from #TempTable 
+0

Czy muszę utworzyć # TempTable pierwszy przed uruchomieniem tego zapytania/ – Satish

+10

Nie, nie. Jeśli chcesz wypełnić tabelę już istniejącą z wierszami, musisz użyć innej składni. –

+0

Awesome it works !! – Satish

2

Spróbuj:

exec('drop table #tab') -- you can add condition 'if table exists' 
exec('select * into #tab from tab') 
3

W MySQL:

create table temp as select * from original_table 
+0

Modyfikowanie temp do #temp nie działa. Komunikat o błędzie: Msg 156, Poziom 15, Stan 1, Wiersz 3 Niepoprawna składnia w pobliżu słowa kluczowego "AS". –

+0

To jest struktura, która działa w MySQL i prawdopodobnie innych. Op nie określił, który typ serwera jest używany, ale ponieważ nazwał go serwerem SQL, domyślam się, że jest to Microsoft SQL Server. Nawiasem mówiąc, dla innych, którzy muszą użyć tego dla MySQL, @ Hunter's answer utworzy nową tabelę. Aby utworzyć nową tabelę tymczasową, należy dodać słowo kluczowe TYMCZASOWE w następujący sposób: STWÓRZ TERMINALNĄ tabelę Temptbl JAK WYBIERZ ... Z oryginału – techdude

0

Załóżmy istniejące kwerendy raportowania jest

Select EmployeeId,EmployeeName from Employee Where EmployeeId>101 order by EmployeeName 

i trzeba zapisać te dane do temparory tabeli następnie zapytanie dotyczy numeru

Select EmployeeId,EmployeeName into #MyTempTable from Employee Where EmployeeId>101 order by EmployeeName 
Powiązane problemy