2016-07-28 64 views
1

我有SQL Server 2008 R2。我試圖將一行轉換爲列以獲得所需格式的結果。PIVOT運算符不能在SQL Server 2008 R2中工作

表名:GenderYearWise

Year Gender Total 
--------------------- 
2005 Female 374 
2005 Male 1579 
2006 Female 853 
2006 Male 4769 

我想導致以下格式:

Gender 2005 2006 
---------------------- 
Female 374  853 
Male 1579 4769 

我嘗試使用以下查詢來獲取所需的格式:

Select 
    Gender, 2005, 2006 
From 
    GenderYearWise 
PIVOT 
    (sum(total) 
    for year IN ([2005], [2006]) 
) AS PitvotTable 

但以上查詢返回這些結果:

Gender (No column name) (No column name) 
-------------------------------------------- 
Female 2005    2006 
Male 2005    2006 

任何人都可以請幫助我,並在我的查詢中確定問題?

+1

將列名稱2005和2006轉換爲[2005],[2006]。 – Blank

回答

1

在SELECT語句中,爲列名2005和2006添加轉義[],如[2005], [2006]將解決該問題。

樣品執行與給定的數據:

DECLARE @GenderYearWise TABLE ([Year] INT, Gender VARCHAR (100), Total INT); 

INSERT INTO @GenderYearWise ([Year], Gender, Total) VALUES 
(2005, 'Female' , 374), 
(2005, 'Male' ,1579), 
(2006, 'Female' , 853), 
(2006, 'Male' ,4769); 

Select 
    Gender, [2005], [2006] 
From 
    @GenderYearWise 
PIVOT 
    (SUM(total) 
    FOR [Year] IN ([2005], [2006]) 
) AS PitvotTable 

結果:

Gender 2005 2006 
Female 374  853 
Male 1579 4769 

同樣對於保留關鍵字Year逸出列名。

+0

太棒了,它適合我。但爲什麼我們需要逃避它? – Anjum

+1

這裏'Gender'是表中已知的列名。但'2005'和'2006'來自PIVOT。所以在select中如果沒有用'[]'轉義該列,它會認爲是字符串。所以它顯示的是2005年和2006年的數據值。 – Arulkumar

-2

在我的系統其工作細

選擇性別,[2005],[2006]從 genderyearwise牛逼樞軸(總和(總)爲一年([2005],[2006]))作爲PVT