CREATE TABLE mit Dynamische Spalte

Ich das einfügen muss einige Daten in eine temp-Tabelle.

Habe ich einige bedingte basierten Säulen wie Salary, Code.

Wie kann ich erstellen Sie eine Tabelle für bedingten basiert Spalten? Ich nicht verwenden wollen
SELECT INTO #tempTable

Hier ist der code:

DECLARE @sql NVARCHAR(MAX)
,@sqlSelect NVARCHAR(MAX) = ''
,@sqlFrom NVARCHAR(MAX) =''

CREATE TABLE #myTempTable (Id INT, DeptId INT, DeptName VARCHAR(100))


SET @sqlSelect ='INSERT INTO #myTempTable
SELECT EMP.Id, EMP.DeptId, EMP.DeptName'

SET @sqlFrom =' FROM dbo.EMPLOYEE AS EMP'

IF (someCondition)
BEGIN
    SET @sqlSelect = @sqlSelect +', EMP.Salary, EMP.Code'            
END

SET @sql =  @sqlSelect +@sqlFrom 

EXEC sp_executesql @sql

Jede Hilfe/Vorschläge, wie ich besser machen kann?


Update:

Zunächst verwendete ich SELECT INTO #TempTable ohne Angabe keine Spalten, SQL Azure nicht unterstützt, habe ich beschlossen zu gehen mit INSERT INTO. Aber nicht sicher, wie kann ich dynamische Spalten in einer definierten Struktur bereits. Vollständig dynamisches SQL 🙁

Aktualisiert meine Frage. Siehe update-Teil für mehr Informationen
Sie können nicht hinzufügen von Spalten zu Tabellen dynamisch. Sie müssen alle Spalten definiert im Voraus.
Also muss ich eine Tabelle ERSTELLEN, einschließlich Lohn -, Code-Spalten, auch wenn Sie nicht in der Auswahl? Wenn das der Fall ist, die, um es legen wird, wenn ich " nur 3 Spalten? Sorry, ich bin nicht gut in sql.
Richtig ist, müssen Sie erstellen alle Spalten, die Sie brauchen können. Wenn eine Spalte ist optional, stellen Sie es auf null festlegbar durch hinzufügen NULL nach seinen Daten geben, wie diese: Salary money NULL. Wenn Sie eine Zeile einfügen, die nicht Salary, NULL eingefügt würde.
Alle Spalten, die keine Daten benötigen, um null-Werte zulassen. Andere als, dass das einfügen sollte funktionieren

InformationsquelleAutor Billa | 2013-03-14

Schreibe einen Kommentar