我有一张 table ,用于存储列 namea
看起来像这样:
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 并执行相同的操作
关于SQL - 从列表中传递列名的动态方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36145776/