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