[SQL] pivot 转转转

SQL 2005开始可以使用pivot

目标:每天各销售员的成交笔数

要把所有EMP写上去,很麻烦耶,有其它方法,不用写全都列出来吗??(留疑问)

建立销售表

create table #Sale(PurID int,Emp varchar(10),YMD int) Insert into #Saleselect PurID = 1 ,Emp='E01',YMD =20110101Insert into #Saleselect PurID = 2 ,Emp='E01',YMD =20120201Insert into #Saleselect PurID = 5 ,Emp='E01',YMD =20120201Insert into #Saleselect PurID = 3 ,Emp='E02',YMD =20130301Insert into #Saleselect PurID = 4 ,Emp='E03',YMD =20180401或是Insert into #Sale(PurID,Emp,YMD) values (1 ,'E01',20110101),(2 ,'E01',20120201),(5 ,'E01',20120201),(3 ,'E02',20130301),(4 ,'E03',20180401)

本来是这样

select YMD,Emp, count(*) from #Salegroup by YMD,Emp

http://img2.58codes.com/2024/201067649yoNgflmcH.png

pivot语法

SELECT <column/s> FROM(<source_query>) as srcPIVOT(<aggr_function>(<aggr_column>FOR <spreading_column> IN (<spreading_elements>))) as ret

把它转成这样

SELECT YMD , [E01] AS Emp1, [E02] AS Emp2, [E03] AS Emp2--各销售员写在这里FROM   (SELECT PurID, Emp, YMD--把各栏位写在这FROM #Sale--把要捞的table写在这) pPIVOT  (  count( PurID)--算成交笔数的单子写在这里FOR Emp IN  ( [E01], [E02],[E03])  --各销售员写在这里) AS pvt  ORDER BY pvt.YMD; --把固定的写在这

http://img2.58codes.com/2024/20106764BZcYt6bILK.png


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章