2017-01-18 5 views
0

ich zur Zeit mit dem folgenden Präfix in eine Tabelle einfügen, sondern auch manaully gesetzt, was ich 2 Spalten in den letzten möchte (1, getdate())select * in einer INSERT-Anweisung

Insert into [Table1]   
select col1,col2,col3, 1,getdate() 
from [table2] 

Ausgabe ist da sind viele Spalten und verursachen ein Durcheinander in der SP.

Ich habe versucht, mit der Anweisung neu zu schreiben ...

Insert Into [table1] 
Select * from [Table2] 

Aber ich muss auch in Betracht ich manuell ausführen soll, auf diese zwei Spalten schreiben in ..

Gibt es eine Möglichkeit das zu tun?

Vielen Dank

+3

Mögliche Duplikat [? INSERT INTO SELECT \ * für SQL Server nicht möglich, bin ich richtig] (http://stackoverflow.com/questions/26886421/insert-in-select-für-sql-server-not-possible-am-i-correct) – mortb

+0

Zeigen Sie uns ein Beispielschema der beiden Tabellen. Hat Tabelle1 zwei zusätzliche Spalten als Tabelle2? – GurV

+0

'... select table2. *, 1, getdate() ...' – jarlh

Antwort

0

Ihr Problem lösen könnte:

Insert into [Table1]   
select col1, col2, col3, '1' as [col4] , getdate() as [col5] from [table2] 
+0

Nur ein Kommentar, keine Notwendigkeit, die ausgewählten Spalten zu benennen. – jarlh

0

Zwei Punkte. Erstens, wenn insert verwenden, sollten Sie immer die Gewohnheit sein, die Spalten für den Einsatz Benennung:

Insert into [Table1](col1, col2, col3, col4, col5)   
    select col1, col2, col3, 1, getdate() 
    from [table2]; 

Zweitens müssen Sie nicht getdate() im Einsatz setzen. Lassen Sie die Datenbank für Sie mit einem Standardwert die Arbeit machen:

create table table1 . . . 
    col5 date default getdate() 
);