这是我的查询我想动态设置列名,是否可以通过查询
select
branch,
sum(case when months = 'JUL' then [Parts Revenue Budget] end) as [JUL]
from
#final
group by
branch
这样的事情:
@Col as varchar(10);
select
branch,
sum(case when months = 'JUL' then [@Col] end) as [JUL]
from
#final
group by
branch
我收到以下错误消息
警告:聚合或其他SET操作消除了空值。
Msg 207,Level 16,State 3,Procedure CRM_FRN_PL_BR_MN,215行 列名@Col
无效
答案 0 :(得分:2)
您要做的是 动态SQL 。大多数DBMS都支持它(你没有说明你正在使用哪一个)。
通常,该过程是 PREPARE 一个以字符串形式传递的语句,如:
SER @Col_Name = 'Col_15' ;
SET @MySTTMNT = CONCAT('SELECT ' ,
@Col_Name , ' ',
'FROM MyTable ' ,
'WHERE ID = ' ,
@MyVariable
) ;
然后将此字符串传递给 Prepare 语句,然后执行。
检查您的DBMS文档以获取动态SQL 。
答案 1 :(得分:2)
declare @col varchar(10);
declare @sql nvarchar(max);
set @col = 'some_field';
set @sql = 'select ' + @col + ' from #final';
exec sp_executesql @sql;