Ich habe zwei Tische. Eine Tabelle (A) enthält n Datenzeilen und die andere Tabelle (B) ist leer. Ich möchte n Zeilen in Tabelle B einfügen, 1 Zeile für jede Zeile in Tabelle A. Tabelle B enthält einige Felder aus Tabelle A, einschließlich eines Fremdschlüssels aus Tabelle A. Am Ende möchte ich eine Zeile in B für jede Zeile in A. Wie kann ich dazu TSQL schreiben?
Antworten:
4 für die Antwort № 1INSERT INTO TableB (ColA, ColB, ColC)
SELECT ColA, ColB, ColC
FROM TableA
Pinal Dave hat hier einen großartigen Artikel über andere alternative Methoden geschrieben:
1 für die Antwort № 2
Wenn ich Sie richtig verstanden habe, müssen Sie so etwas wie SELECT INTO
:
http://www.w3schools.com/sql/sql_select_into.asp
1 für die Antwort № 3
Du kannst das:
;WITH CTE
AS
(
SELECT *, ROW_NUMBER() OVER(ORDER BY PrimaryKey) row_num
FROM tableA
)
INSERT INTO Tableb(...)
SELECT ...
FROM CTE
WHERE row_num = 1;
1 für die Antwort № 4
Dies kann mithilfe der folgenden Abfrage durchgeführt werden.
INSERT INTO B(PriKey, RelationshipWithA, Description)
SELECT ROW_NUMBER(), A.PrimaryKey, A.Description
FROM A
Wenn Sie ein angemesseneres Beispiel wünschen, können Sie mir bestimmte Tabellennamen und Spalten angeben, die Sie eingeben möchten.