SQL - 从列表中传递列名的动态方式

标签 sql sql-server sql-server-2008 tsql dynamic

我有一张 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/

相关文章:

SQL 大小写函数查询细化

sql - 存储数据对称矩阵的最佳方式 nxn = 26 亿

c# - 压缩图片和照片存储在SQL Server数据库中

sql-server - 在特定条件下使用 Sum

sql-server - SQL Server中通过select插入百万条记录

sql - 如何从 ruby​​ on rails 上的有序列表中按计数子查询进行排序和分组

mysql - 每行列子集为空的表的正确设计

sql - 当合并空列时不合并只是插入

sql-server - SQL Report Services 的报表查看器的替代方案

SQL - 选择一个字段中具有来自另一字段的最高记录的不同记录