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>)

)

例子:待续

原文地址:https://www.cnblogs.com/lei2007/p/2154996.html