PIVOT用于将列值旋转为列名(即行转列),在sql Server 2000可以用聚合函数配合CASE语句实现
PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P
完整语法:
table_source
PIVOT(
聚合函数(value_column)
FOR pivot_column
IN(<column_List>)
)
UNPIVOT用于将列明转为列值(即列转行),在sql Server 2000可以用UNION来实现
UNPIVOT(
value_column
注意:PIVOT、UNPIVOT是sql Server 2005 的语法,使用需修改数据库兼容级别
在数据库属性->选项->兼容级别改为 90
4、使用sql Server 2005静态sql
select*fromtb pivot(max(分数)for课程in(语文,数学,物理))a
5、使用sql Server 2005动态sql
--使用stuff()
declare@sqlvarchar(8000)
set@sql='' --初始化变量@sql
select@sql=@sql+','+课程fromtbgroupby课程--变量多值赋值
set@sql=stuff(@sql,1,'')--去掉首个','
set@sql='select * from tb pivot (max(分数) for课程in ('+@sql+'))a'
exec(@sql)
--或使用isnull()
–-获得课程集合
select@sql=isnull(@sql+',','')+课程fromtbgroupby课程
exec(@sql)
总结以上是内存溢出为你收集整理的SQLServer行列转换 Pivot UnPivot 动态实现全部内容,希望文章能够帮你解决SQLServer行列转换 Pivot UnPivot 动态实现所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)