資料庫的相容級別出錯

2021-04-14 17:23:19 字數 877 閱讀 8066

今天幫人做乙個交叉表,發現乙個奇怪的問題

create view view_pivottable

asselect t1.fnumber"物料**",t1.fname"物料名稱",t2.fname"倉庫名稱",t3.fqty"數量" from

t_icitem t1 inner join icinventory t3 on t1.fitemid=t3.fitemid inner join t_stock t2

on t2.fitemid=t3.fstockid

declare @s varchar(max)

set @s=''

select  @s=@s+',['+倉庫名稱+']' from test group by 倉庫名稱

set @s=stuff(@s,1,1,'')

exec('

select 物料**,物料名稱,'+@s+',合計=(select sum(數量) from test where 物料**=pt.物料**) from test as tab

pivot

( max(數量)

for 倉庫名稱in ('+@s+')

)as pt

')上面的語句並未出錯,但是總報錯"'pivot' 附近有語法錯誤。您可能需要將當前資料庫的相容級別設定為更高的值,以啟用此功能"

初步猜測是沒有支援2005的新語法,不支援pivot關鍵字,(注:這個庫是別人給我的,也許是從2000裡匯出來的)

按照提示需要修改正在運算元據庫的相容級別,在網上搜了一下,有個系統儲存過程可以辦到這點

exec   sp_dbcmptlevel kingdee,90

其中'kingdee'就是你要修改相容性的資料庫名,執行完畢後,重新執行上面的sql語句,執行成功

修改資料庫的相容級別

語法alter database database name set compatibility level 引數 database name 要修改的資料庫的名稱。compatibility level 要使資料庫與之相容的 sql server 版本。該值必須為下列值之一 80 sql serv...

修改資料庫的相容級別

語法alter database database name set compatibility level 引數 database name 要修改的資料庫的名稱。compatibility level 要使資料庫與之相容的 sql server 版本。該值必須為下列值之一 80 sql serv...

sql server修改資料庫的相容級別

語法 alter database database name set compatibility level 引數database name 要修改的資料庫的名稱。compatibility level 要使資料庫與之相容的 sql server 版本。該值必須為下列值之一 sql server ...