我正在尝试将一个过程转换为从表中选择n个参数的函数,并且对于每个n,从另一个表中选择k个列名。它最终必须创建一个包含一些固定列+ n * k列的表,这些列随输入参数而变化。每个n的k也不同。我使用动态创建的查询编写了该过程。
对于该函数,我想我可以运行游标或while循环来获取每个n并将相应的列名称提供给表变量。声明变量并在循环内设置它们的值感觉就像是有效的方法。
最后,我将转动变量并将它们连接起来形成所需的表格。 问题在于此。声明,或者即使我已经声明了它们,然后按顺序调用循环中的表变量来分配它们。
{
Declare @plan_section table (
Roll identity (1,1)
Plan_id int
Plan_section_id int
)
Insert into @plan_section
Select plan_id, plan_section_id from t_plan_section where plan_id=@plan_id
Declare @n int, @plan_count int
Set @n =1
Set @plan_count = (select count(plan_section_id) from t_plan_section where plan_id = @plan_id)
While @n<@plan_count
Begin
Declare Variable_’+cast(@n, varchar(2))+’ table ( ‘@plan_section_name’ varchar(100) )
Insert into variable_’+@n+’
Select metric from t_plan_section_metric a join @plan_section b using(plan_section_id) where b.roll = @n
set @n = @n+1
End
}
这是我用过的但没有用的查询摘录。
请考虑每个plan_id对应n个计划部分,并将k列名称检索到循环内声明的n个表变量中。 欢迎任何和所有建议。如果您有其他方法,请务必分享。