UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现。
PIVOT的完整语法:
table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) )
UNPIVOT的完整语法:
table_source UNPIVOT( value_column FOR pivot_column IN(<column_list>) )
注意:PIVOT、UNPIVOT是SQL Server 2005 的语法,使用需修改数据库兼容级别
在数据库属性->选项->兼容级别改为 90
示例:
if object_id('tb') is not null drop table tb
go
create table tb([S_REG] varchar(10),[S_ARER] varchar(10),[D_COLUMN] varchar(20),[VALUE] int)
insert into tb values('广东','广州市','双喜@软锦绣',74)
insert into tb values('广东','深圳市','双喜@软如意',26)
insert into tb values('广东','深圳市','双喜@软如意',34)
insert into tb values('广东','东莞市','双喜@软珍品',83)
insert into tb values('广东','广州市','双喜@软珍品',83)
insert into tb values('广东','广州市','双喜@软珍品',11)
go
select * from tb
go
select [S_REG],[S_ARER],[双喜@软锦绣],[双喜@软如意],[双喜@软珍品] from tb
pivot(sum([VALUE])for [D_COLUMN] in([双喜@软锦绣],[双喜@软如意],[双喜@软珍品]))a
drop table tb原表结构:
行转列后的结构:
