专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

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

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:28:39       共计:3588 浏览
/*测试数据时发现,执行以下语句没有问题。其他数据库无法执行*/

         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
*/

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行 | ·下一条:C# TimeSpan 计算时间差(时间间隔)

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有