您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2024/5/15 19:50:24发布30次查看
/*测试数据时发现,执行以下语句没有问题。其他数据库无法执行*/ select shangpinbh,a9999900000,e000050000 from ( select * from kucunmx--(1378行受影响) where kuweibh in ( 'a9999900000' , 'e000050000' ) and shuliang0)a pivot ( max (shuliang) for
/*测试数据时发现,执行以下语句没有问题。其他数据库无法执行*/
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
*/
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product