iT邦幫忙

4

[SQL] pivot 轉轉轉

  • 分享至 

  • xImage
  •  

SQL 2005開始可以使用pivot

目標:每天各銷售員的成交筆數

要把所有EMP寫上去,很麻煩耶,有其它方法,不用寫全都列出來嗎??(留疑問)

建立銷售表

drop table #Sale
create table #Sale
(
	PurID int
	,Emp varchar(10)
	,YMD int
) 
Insert into #Sale	select PurID = 1 ,Emp='林懷民',YMD =20110101
Insert into #Sale	select PurID = 2 ,Emp='林懷民',YMD =20120201
Insert into #Sale	select PurID = 5 ,Emp='林懷民',YMD =20120201
Insert into #Sale	select PurID = 3 ,Emp='陳念真',YMD =20130301
Insert into #Sale	select PurID = 4 ,Emp='柯一正',YMD =20180401

或是
Insert into #Sale	(PurID,Emp,YMD) values 
(1 ,'林懷民',20110101),
(2 ,'林懷民',20120201),
(5 ,'林懷民',20120201),
(3 ,'陳念真',20130301),
(4 ,'柯一正',20180401)

本來是這樣

select YMD,Emp, count(*) from #Sale
group by YMD,Emp

https://ithelp.ithome.com.tw/upload/images/20240715/20106764FhBtUkO2TI.jpg

pivot語法

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

把它轉成這樣


 SELECT YMD , [林懷民] , [陳念真] ,[柯一正] --各銷售員寫在這裡
FROM   
(
	SELECT PurID, Emp, YMD	--把各欄位寫在這
	FROM #Sale				--把要撈的table寫在這
) p	
PIVOT  
(  
	count( PurID)	--算成交筆數的單子寫在這裡
	FOR Emp IN  
		( [林懷民] , [陳念真] ,[柯一正] )  --各銷售員寫在這裡
) AS pvt  
ORDER BY pvt.YMD; --把固定的寫在這

https://ithelp.ithome.com.tw/upload/images/20240715/20106764evEYd56Acu.jpg


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
神Q超人
iT邦研究生 5 級 ‧ 2018-08-16 18:23:31

推一個樞紐分析查詢,
真的很方便/images/emoticon/emoticon12.gif

我要留言

立即登入留言