Sql server SQL查询动态传递列名

Sql server SQL查询动态传递列名,sql-server,Sql Server,这是我的查询我想动态设置列名,可以通过查询吗 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

这是我的查询我想动态设置列名,可以通过查询吗

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
我收到下面的错误消息

警告:通过聚合或其他集合操作消除空值

Msg 207,16级,状态3,程序CRM\u FRN\u PL\u BR\u MN,第215行 列名称@Col无效


您要做的是称为动态SQL。大多数DBMS都支持它,但您并没有说明正在使用哪个DBMS

通常,过程是准备一条作为字符串传递的语句,类似于:

SER @Col_Name = 'Col_15' ;
SET @MySTTMNT = CONCAT('SELECT '           ,
                        @Col_Name     , ' ',
                       'FROM MyTable '     ,
                       'WHERE ID = '       ,
                       @MyVariable
                      ) ;
然后将该字符串传递给Prepare语句,然后执行


检查DBMS文档中的动态SQL。

您要做的就是称为动态SQL。大多数DBMS都支持它,但您并没有说明正在使用哪个DBMS

通常,过程是准备一条作为字符串传递的语句,类似于:

SER @Col_Name = 'Col_15' ;
SET @MySTTMNT = CONCAT('SELECT '           ,
                        @Col_Name     , ' ',
                       'FROM MyTable '     ,
                       'WHERE ID = '       ,
                       @MyVariable
                      ) ;
然后将该字符串传递给Prepare语句,然后执行


检查DBMS文档中的动态SQL。

过程“CRM_FRN_PL_BR_MN”需要未提供的参数“@SQL”。set@SQL=”选择branch,sumcase when months=JUL,然后['+@a+']结束为按分支分组的最后一个组中的[JUL];exec sp_executesql@sql;似乎名为CRM_FRN_PL_BR_MN的过程中出现了问题。不,这不是问题,我已经解决了。感谢过程“CRM_FRN_PL_BR_MN”期望参数“@sql”,但没有提供。set@sql=”选择分支,sumcase when months=JUL然后['+@a+']结束为最后一组中的[JUL];exec sp_executesql@sql;似乎程序中名为CRM_FRN_PL_BR_MN的问题。不,不,这不是问题所在,我已经解决了,谢谢