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

php中文网
发布: 2016-06-07 15:42:24
原创
1832人浏览过

/*测试数据时发现,执行以下语句没有问题。其他数据库无法执行*/ 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

创客贴设计
创客贴设计

创客贴设计,一款智能在线设计工具,设计不求人,AI助你零基础完成专业设计!

创客贴设计 213
查看详情 创客贴设计

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

*/


最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号