我有一个表,我存储列名称,如下所示:
header
Ref_1
Ref_4
Ref_6
Ref_100
我想运行一个动态的SQL,它将使用上面的值作为列名,它应该如下所示:
select mycolumn1, mycolumn2 a from mytable1 b inner join a.ref = **b.ref_1**
select mycolumn1, mycolumn2 a from mytable1 b inner join a.ref = **b.ref_4**
select mycolumn1, mycolumn2 a from mytable1 b inner join a.ref = **b.ref_6**
select mycolumn1, mycolumn2 a from mytable1 b inner join a.ref = **b.ref_100**
在这里你看到b.ref _ {#}应该是动态传递的,有什么办法吗?
我可以使用C#脚本或SQL Server集成服务轻松完成此操作,但我想在T_SQL中执行此操作?
提前致谢
最佳答案
declare @str varchar(max) = (
select 'select mycolumn1, mycolumn2 a from mytable1 b inner join a.ref = b. ' + your_column_table.header
from your_column_table
)
然后你可以执行@str
如果要生成单独的sql语句,则需要遍历your_column_table并执行相同的操作