SQL中Pivot和Unpivot
第一:PIVOT用于将列值旋转为列名(即行转列)。
PIVOT的一般语法是:PIVOT(聚合函数(列1) FOR 列2 in
(
列2在DB中存储的值
) )AS P
备注:列1:显示在列2下面的值,列2:要转换的列。
例子:
select
*
from
(
select
userid,username,age
from r_user
) as a
pivot(max(age) for a.username in
(罗纳尔多,科比,加内特,皮尔斯,易建联
)) as aa
在后台使用该sql 时,可以定义string sqlpivot=@"(上面的语句)aaa";
sqlpivot=sqlpivot.Replace("\r\n", " ").Replace("\n", " ").Replace("\r", " "); 去掉转义字符
现在可以使用sqlpivot 。
总结:聚合函数:此时获取人员姓名使用max 或者Min结果相同,因为年龄只有一个。有时候使用count 或者sum 根据需求而定。
第二: UNPIVOT用于将列名转为列值(即列转行)
语法:
UNPIVOT(
value_column
FOR pivot_column
IN(<column_list>)
)
例子:待续