2016-08-03 9 views
0

Ich suche jemanden, der mir in die richtige Richtung zeigen. Nicht einmal sicher, wie man das fragt. Alles, was ich mit dem Wort, das ich benutze, finde, ist über die Kombination von Ergebnissen aus separaten Tabellen zu sprechen.SQL Server: mehrere Auswahlergebnisse in eine Zeile einfügen

Ich habe eine einzige Tabelle und ich brauche mehrere Select-Ergebnis, um in eine andere Tabelle in einer einzigen Zeile zu gehen. Also muss ich eine neue Zeile aus mehreren select/as/where-Abfragen einfügen, die ich als eine resultierende Zeile brauche.

In einem wirklich grundlegenden Sinne brauche ich das aber 10+ Ergebnisse in eine 10 + Spaltenreihe mit einer Datum/Zeit-Referenz.

Insert into [table2].[namealias1] 
    Select [number] as namealias1 
    From [db].[table] 
    Where [name] = 'name1' 

Tabelle 1 (Quelle)

[NAME] [NUMBER] 

Table2 (Ziel)

DATESTAMP NameAlias1 NameAlias2 

Es hat eine lange Zeit gewesen ist, da ich jede SQL getan habe, und ich bin auf der Suche nach ein paar Ratschläge und ein in die richtige Richtung drücken. Auch nur ein paar Hinweise darauf, wie man das am besten angehen kann. Dies ist auf SQL Server 2012.

Vielen Dank im Voraus für jede Hilfe.

+0

Was soll in der einzelnen Reihe sein? Eine Spalte für jede Nummer? Wenn die Abfrage 100 Zeilen zurückgibt, erwarten Sie 100 Spalten in der einzelnen Zeile? – artm

+0

erste Union alles in eine Tabelle, dann verwenden Sie Ihre Methode zu speichern –

+0

Ich denke, ich brauche eine CTE oder temporäre Tabelle. – cautrey

Antwort

0

Vielleicht könnten CTEs für Ihr Problem helfen. Sie brauchen so etwas wie diese (Pseudocode)

;with cte1 as 
(
    select col1, col2, ... ,colN 
    from table1 
    where conditions_for_table1 
), 
cte2 as 
(
    select col1, col2,... colK 
    from table2 
    where conditions_for_table2 
), 
...... 
...... 

insert into final_table(talbe columns here) 
select c1.col1,c2.col3, ... cM.colK 
from cte1 c1 
left join /*inner join*/ cte2 c2 on c1.joining_column = c2.joinint_column and ... 
..... 
left join cteM cM /*inner join*/ on ... 
+0

Ich habe gestern mit CTE gearbeitet, aber es wird nicht für mehrere Bedingungen übernommen. Ich muss mehrere Zeilen nach Namen auswählen und die Werte aus jeder ausgewählten Zeile in eine einzelne Zeile in Tabelle 2 zurückgeben. – cautrey

+0

Was ist eine einzelne Zeile? Vielleicht sollten Sie mit dem Sammeln der von den CTEs erhaltenen Daten fortfahren. –

+0

Also ist das wie Variablen den ausgewählten Daten zuweisen? – cautrey

0

Brute-Force-Methode:

ich für jede select-Anweisung Ergebnis eine Variable deklariert und verwendet, um die Variablen in der Insert-Anweisung.

Verwandte Themen