如何从带有变量的表中选择括号中的列

时间:2016-04-26 22:04:46

标签: tsql while-loop delimiter

我有一个包含以下列的简单表。我想创建一个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

所以不是列出值,而是列出列名。如何才能将其列为值列表?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要使用DynamicSql。请试试这个:

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

答案 1 :(得分: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