'PIVOT'附近的语法不正确

Joh*_*nic 5 sql t-sql sql-server-2008-r2

我正在运行SQL Server 2008 R2.我正在尝试构建一个从表结构如下的表中获取数据的表:

company | ded_id | descr

10          1      MEDINS
10          2      LIFE
10          3      PENSN
...
10         50      DOMREL
Run Code Online (Sandbox Code Playgroud)

我需要构建一个临时表,格式如下:

company | DESC1 | DESC2 | DESC3 ... | DESC50
10        MEDINS  LIFE    PENSN       DOMREL
Run Code Online (Sandbox Code Playgroud)

所以我构建了以下查询:

    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
Run Code Online (Sandbox Code Playgroud)

因此运行此命令会出现以下错误:

消息325,级别15,状态1,行6'PIVOT'附近的语法不正确.您可能需要将当前数据库的兼容级别设置为更高的值才能启用此功能.请参阅ALTER DATABASE的SET COMPATIBILITY_LEVEL选项的帮助.

我仔细检查了数据库上的兼容级别,它已经​​设置为100,因此不能成为问题.您能想到可能导致此行为的任何其他设置吗?

Alt*_*tel 13

此类问题的可能原因是您从其他源导入数据库,该数据库可能正在运行旧版本的SQL Server.无论如何,你有办法摆脱它.按照以下步骤:

  1. 右键单击Database(例如Northwind).
  2. 点击"属性".
  3. 点击左侧窗格中"选择页面"部分下的"选项".
  4. 根据您的安装从右侧的"兼容级别"下拉列表中选择适当的数据库版本.
  5. 保存更改并立即尝试.

以下是"属性"窗口的屏幕截图供您参考.

在此输入图像描述