PIVOT的一个小应用

之前学习case when来实现行列转换的方法,但是今天学习到了pivot的方法,记录分享下,园子里大牛多多,甚是受益

通过下面语句获取到了所需数据:参考别人的文章,加上自己的理解

select ProvinceID,中石油,中石化,中海油,社会单位 //这里要注意的是对汉字不需要加单引号,这里是选出来所需要的列
from 
    (select ProvinceID,[Name],Organization from Sys_GasStationInfo gs 
   left join Rel_User_SurveyTable rus on gs.ID=rus.ObjectID left join Sys_User u on rus.UserID=u.ID where u.IsValid=1) gas // 这里获取原始数据 pivot(count([Name]) for Organization in (中石油,中石化,中海油,社会单位))p ///这里的汉字同样不能加单引号,而且数量要和上面的对应,最后pivot进行行转列的处理,

count([Name]):是对转换后的列的值进行的处理,你想要获得什么样的数据
for Organization in (中石油,中石化,中海油,社会单位):是对Organization列的值分别转换成一个个列,但是我们转换的只是in里面的列,也就是我们所需要的列;可以理解为将Organization中为“中石油”,“中石化”,“中海油”,“社会单位”转换成列,这些列的值取Count([Name])

最后获取到数据格式如下:

posted @ 2013-03-20 17:08  peace-lee  阅读(542)  评论(0编辑  收藏  举报