2016-03-23 13 views
0

Ich versuche, eine dynamisch in Tsql zu versuchen. Ich habe eine Abfrage, die mir einige Daten (als Ergebnis einer anderen dynamischen Abfrage) in einer Spalte gibt. Zum Beispiel sagen Jahre wie 2011/2012. Dies wird in einer Spalte sein. Was ich will, ist, den Wert jeder Zeile auszuwählen und als Spaltennamen vom Typ int zu benennen. Später kann ich diese temporäre Tabelle verwenden, um Daten in es zu entladen.Dynamische Erstellung von Tabelle in Tsql

Irgendwelche Vorschläge?

Antwort

0

Wären Sie in der Lage, so etwas zu verwenden?

DECLARE @Tab VARCHAR(MAX) 
SET @Tab = 'CREATE TABLE #Whatever (' 

SELECT @Tab = @Tab + QUOTENAME(ColumnName) + ' INT NULL 
,' 
FROM @This 
SELECT @Tab = SUBSTRING(@Tab,1,LEN(@Tab)-1) + ')' 
PRINT @Tab 
-- EXEC (@Tab) 

Zwei Punkte: Sie können feststellen, dass Sie die temporäre Tabelle erstellen, müssen ohne dynamischen SQL zu verwenden, stellen Sie dann die Select-Anweisung die Tabelle zu ändern; Dies ist so, dass die Tabelle im aktuellen Kontext vorhanden ist. Wenn sich die create-Anweisung im dynamischen Kontext befindet, wird möglicherweise ein Fehler angezeigt.

Ich mag nicht mit dynamic sql wie folgt - wenn Sie später einen Pivot verwenden könnten, um die Spalten zurückzugeben, könnte das eine bessere Option sein (ich bin mir nicht sicher, ob es in diesem Fall möglich ist).