2016-04-26 67 views
0

我有一個簡單的表格,它包含以下列。我想創建一個WHILE循環,它會像這樣返回每一列。我怎樣才能做到這一點?如何從變量表中選擇括號內的列

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 

因此,不是列出值,而是列出列名。我怎樣才能得到這個列表值呢?

+0

它總是好的,加上預計結果你的問題。你的問題不是很清楚。你想從循環中獲得什麼? – FLICKER

回答

1

試試這個:

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

謝謝你們的解決方案。事實證明,我需要有一個WHERE語句來過濾掉#bracket_example中的一些數據,所以我只是要硬編碼這部分。我已經知道我需要的確切行數。 – salvationishere

1

如果我理解正確,您需要使用DynamicSql。請試試這個:

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