日期:2014-05-17  浏览次数:20642 次

这个,动态行转列的列名能不能按一定顺序排序?
本帖最后由 mjjing 于 2013-01-08 17:55:55 编辑
declare @s nvarchar(4000)set @s=''Select     @s=@s+','+quotename([Course])+'=max(case when [Course]='+quotename([Course],'''')+' then [Score] else 0 end)'from Class group by[Course]exec('select [Student]'+@s+' from Class group by [Student]')  


用的是这个,比如 动态列是日期,有没有办法按日期顺序牌列?

------解决方案--------------------
试试
DECLARE @s NVARCHAR(4000)
SET @s = ''
SELECT  @s = @s + ',' + QUOTENAME([Course]) + '=max(case when [Course]='
        + QUOTENAME([Course], '''') + ' then [Score] else 0 end)'
FROM   (SELECT * FROM  Class ORDER BY [日期]) Class
GROUP BY [Course]
EXEC('select [Student]'+@s+' from Class group by [Student]')
  
------解决方案--------------------
declare @s nvarchar(4000)
set @s=''
Select     @s=@s+','+quotename(CONVERT(varchar(10),日期列,120))+'=max(case when CONVERT(varchar(10),日期列,120)='+quotename([日期列],'''')+' then [Score] else 0 end)'
from Class 
group by CONVERT(varchar(10),日期列,120)
order by Min(日期列)