因資料庫相容級別低導致列轉行查詢出錯問題的處理

2021-04-22 17:21:34 字數 1184 閱讀 3819

/*測試資料時發現,執行以下語句沒有問題。其他資料庫無法執行*/

select shangpinbh,a9999900000,e000050000

from (select * from kucunmx  --(1378 行受影響)

where kuweibh in ('a9999900000','e000050000') and shuliang > 0 ) a

pivot (max(shuliang) for kuweibh in (a9999900000,e000050000)) b

/*執行結果如下:

訊息 325,級別 15,狀態 1,第 3 行

'pivot' 附近有語法錯誤。您可能需要將當前資料庫的相容級別設定為更高的值,以啟用此功能。

*//*查詢聯機叢書:

sp_dbcmptlevel[ [@dbname=] name ]     [,[@new_cmptlevel=] version ]

60= sql server 6.0

65= sql server 6.5

70= sql server 7.0

80= sql server 2000

90= sql server 2005

對於 sql server 2005 的所有安裝,預設的相容級別為 90。sql server 2005 中建立的資料庫即設定為該級別,除非model資料庫有更低的相容級別。在將資料庫從 sql server 的任何早期版本公升級到 sql server 2005 之後,該資料庫將保留其現有的相容級別。這既適用於系統資料庫也適用於使用者資料庫。可使用sp_dbcmptlevel將資料庫的相容級別更改為 90。

select compatibility_level from  sys.databases where name='test'

--80

解決:exec sp_dbcmptlevel test, 90;

go*/

資料庫的相容級別出錯

今天幫人做乙個交叉表,發現乙個奇怪的問題 create view view pivottable asselect t1.fnumber 物料 t1.fname 物料名稱 t2.fname 倉庫名稱 t3.fqty 數量 from t icitem t1 inner join icinventory...

修改資料庫的相容級別

語法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...