SQL SERVER PIVOT使用

白馬酒涼發表於2013-07-23

參照這個網址介紹

http://www.cnblogs.com/lwhkdash/archive/2012/06/26/2562979.html

一般SQL Server的函式都會識別為紫色,可是PIVOT卻是灰色,我一開始以為是SQL Server不能使用,但能正常使用

可以使用print @@version確認下相容級別,90的是沒問題的

Microsoft SQL Server 2005 - 9.00.4060.00 (X64)

資料庫右鍵->屬性->選項

這聚合函式對text,nvarchar,varchar欄位都不適用,只有將INCOME是DECIMAL才可以

create table WEEK_INCOME3(WEEK NVARCHAR(10),INCOME text)


 

 既然需要1個函式,那對於varchar型別還可以用max函式作變通的辦法,text就還是不行

create table WEEK_INCOME4(WEEK NVARCHAR(10),INCOME VARCHAR(10))

delete from WEEK_INCOME4

INSERT INTO WEEK_INCOME4
SELECT 'D1', '$1000'
UNION ALL
SELECT'D2', '$2000'
UNION ALL
SELECT'D3', '$3000'
UNION ALL
SELECT'D4', '$4000'
UNION ALL
SELECT'D5', '$5000'
UNION ALL
SELECT'D6', '$6000'
UNION ALL
SELECT'D7', '$7000'




由PIVOT函式的格式可以看出,WEEK column的值作為變化後的列名,不是字串的形式,若是column值有空格,則需要用中括號。


update WEEK_INCOME4 set WEEK ='D1 D1' where iNCOME='$1000'
 
select * from WEEK_INCOME4
pivot(max(INCOME) for [WEEK] in ([D1 D1],D2,D3,D4,D5,D6,D7)) tbl

相關文章