在 SQL select 语句中重用列名作为声明变量

Reusing column name as declared variable in SQL select statement

我正在从事一个项目,其中的列名称每个月都会更改。所以我试图声明一个变量,其中包含我可以重用的列名。 所以我这样做了。

declare @cal_name varchar(max) = 'ID'
select @cal_name from Table_A
union all
select @cal_name from Table_B

但这只是在结果框中将 ID 作为字符串打印出来。 我不想使用另一个变量来存储 sql 语句,任何人都可以帮助我根据我的要求进行查询。

是这样的吗?

declare @cal_name varchar(max) = 'ID'    
exec
(
    'select ' + @cal_name + ' from Table_A
    union all
    select ' + @cal_name + ' from Table_B'
)