2016-04-26 4 views
0

Ich habe eine einfache Tabelle, die die folgenden Spalten enthält. Ich möchte eine WHILE-Schleife erstellen, die jede Spalte wie folgt zurückgibt. Wie kann ich das machen?So wählen Sie Klammern Spalten aus einer Tabelle mit einer Variablen

create table #bracket_example (row_num int identity(0,1), [0] int, [1] int, [2] int, [3] int) 
insert #bracket_example values (25,35,45,55) 
insert #bracket_example values (32,53,98,67) 
insert #bracket_example values (33,44,55,66) 
insert #bracket_example values (11,14,15,16) 
declare @j int 
set @j = 0 

while @j < 4 
begin 
select '[' + cast(@j as varchar(2)) + ']' from #bracket_example 
set @j = @j + 1 
end 

Anstatt die Werte aufzulisten, werden nur die Spaltennamen aufgelistet. Wie kann ich stattdessen Werte auflisten?

+0

es ist immer gut, das erwartete Ergebnis in Ihrer Frage hinzufügen. Deine Frage ist nicht sehr klar. Was versuchst du von deiner Schleife zu bekommen? – FLICKER

Antwort

1

Try this:

create table #bracket_example (row_num int identity(0,1), [0] int, [1] int, [2] int, [3] int) 

insert #bracket_example values (25,35,45,55) 
insert #bracket_example values (32,53,98,67) 
insert #bracket_example values (33,44,55,66) 
insert #bracket_example values (11,14,15,16) 

declare @j int 
declare @DynSQL varchar(50) 
set @j = 0 

while @j < 4 
begin 

set @DynSQL = 'select [' + cast(@j as varchar(2)) + '] as Column_' + cast(@j as varchar(10)) + ' from #bracket_example' 

EXEC (@DynSQL) 

set @j = @j + 1 
end 
+0

Vielen Dank für Ihre Lösungen. Wie sich herausstellt, muss ich eine WHERE-Anweisung haben, um einige der Daten aus #bracket_example herauszufiltern, also werde ich diesen Abschnitt hart codieren. Ich kenne bereits die genauen Zeilen, die ich brauche. – salvationishere

1

Wenn ich richtig verstehe, müssen Sie DynamicSql verwenden. Bitte versuchen Sie dies:

while @j < 4 
begin 
EXEC sp_executesql 'select [' + cast(@j as varchar(2)) + '] from #bracket_example' 
set @j = @j + 1 
end 
Verwandte Themen