SQLServer行列转换 Pivot UnPivot 动态实现
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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |