2014-01-31 109 views
4

我正在運行SQL Server 2008 R2。我想建一個表,從結構像這樣的表中獲取數據:'PIVOT'附近的語法不正確

company | ded_id | descr 

10   1  MEDINS 
10   2  LIFE 
10   3  PENSN 
... 
10   50  DOMREL 

而且我需要建立一個臨時表出來像這樣的格式:

company | DESC1 | DESC2 | DESC3 ... | DESC50 
10  MEDINS LIFE PENSN  DOMREL 

所以我內置了以下查詢:

SELECT * 
    FROM (
    SELECT company,'DESC'+CAST(ded_id as VARCHAR(2)) AS DedID,descr 
    FROM deduction  
    ) deds 
    PIVOT (MAX(descr)FOR DedID IN([DESC1],[DESC2],[DESC3])) descs 

所以運行此提供了以下錯誤:

Msg 325, Level 15, State 1, Line 6 Incorrect syntax near 'PIVOT'. You may need to set the compatibility level of the current database to a higher value to enable this feature. See help for the SET COMPATIBILITY_LEVEL option of ALTER DATABASE.

我仔細檢查了數據庫的兼容性級別,它已經​​設置爲100,所以不能成爲問題。你能想到其他可能導致這種行爲的設置嗎?

+0

我無法用我的SQL Server 2008 R2 SP1(10.50.2500)服務器重現此錯誤;查詢工作正常,併產生所需的輸出。 – jpw

回答

12

此類問題的可能原因是您從其他來源導入的數據庫可能正在運行舊版本的SQL Server。無論如何,你有辦法擺脫它。請按照以下步驟操作:

  1. 右鍵單擊數據庫(例如Northwind)。
  2. 點擊'屬性'。
  3. 在「選擇頁面」部分的左側窗格中單擊「選項」。
  4. 從右側的「兼容性級別」下拉菜單中選擇適合您的安裝的數據庫版本。
  5. 保存更改並立即嘗試。

以下是屬性窗口的屏幕截圖供您參考。

enter image description here

+1

我在SQL SERVER 2012上,沒有看到選項 –

+0

中的''選擇頁面'部分在上面的屏幕截圖中,左側列表中有'選項'。 –