Home >Database >Mysql Tutorial >因数据库兼容级别低导致列转行查询出错问题的处理

因数据库兼容级别低导致列转行查询出错问题的处理

WBOY
WBOYOriginal
2016-06-07 15:42:241625browse

/*测试数据时发现,执行以下语句没有问题。其他数据库无法执行*/ Select ShangPinBH,A9999900000,E000050000 from ( Select * from KuCunMX--(1378行受影响) Where KuWeiBH in ( 'A9999900000' , 'E000050000' ) and ShuLiang0)a pivot ( max (ShuLiang) for

/*测试数据时发现,执行以下语句没有问题。其他数据库无法执行*/

  1.  Select ShangPinBH,A9999900000,E000050000
  2.  from (Select from KuCunMX  --(1378 行受影响)
  3.         Where KuWeiBH in ('A9999900000','E000050000'and ShuLiang > 0 ) a
  4.  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

*/


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:[U]3.1.5 Contact 小技巧题Next article:数据库设计规范