SQL-行转列(PIVOT)实例1

--未旋转之前的查询结果
select s.Name ShiftName,h.BusinessEntityID,d.Name as DpartmentName
from  HumanResources.EmployeeDepartmentHistory h
inner join HumanResources.Department d
on h.DepartmentID=d.DepartmentID

inner join HumanResources.Shift s
on s.ShiftID=h.ShiftID

WHERE  ENDDATE IS NULL AND
       d.Name IN('Production','Engineering','Marketing')

order by ShiftName



--旋转之后的结果

select ShiftName,Production,Engineering,Marketing
from 
(select s.Name ShiftName,h.BusinessEntityID,d.Name as DpartmentName
from  HumanResources.EmployeeDepartmentHistory h
inner join HumanResources.Department d
on h.DepartmentID=d.DepartmentID

inner join HumanResources.Shift s
on s.ShiftID=h.ShiftID

WHERE  ENDDATE IS NULL AND
       d.Name IN('Production','Engineering','Marketing')


)t
pivot 
(count(BusinessEntityID)
 for DpartmentName in ([Production],[Engineering],[Marketing]))b
 
order by ShiftName



 

posted @ 2015-12-23 13:40  职场人的思考  阅读(319)  评论(0编辑  收藏  举报