想要做到动态列名,目前我找到的方法是通过字符串执行查询,并将列名动态赋值
DECLARE @sql NVARCHAR(MAX) = null --定义执行的查询语句
DECLARE @ParmDefinition  NVARCHAR(4000) = null
DECLARE @Monday VARCHAR(10) =‘动态列名‘
SET @sql=‘
  SELECT 
	  [Monday] AS [‘+ @Monday+‘]
from 表名
‘
//查询语句中需要用到的变量
 SET @ParmDefinition = N‘
		@p_LastWeekMonday DATETIME 
       ,@p_LastWeekSunday DATETIME  
     ‘  
  //执行字符串查询
 EXECUTE sp_executesql @sql
		, @ParmDefinition   
       ,@p_LastWeekMonday= @LastWeekMonday  
       ,@p_LastWeekSunday=@LastWeekSunday
原文:http://www.cnblogs.com/zhangxs/p/5338216.html