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])
最后获取到数据格式如下:
天行健,君子以自强不息; 地势坤,君子以厚德载物!