视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
因数据库兼容级别低导致列转行查询出错问题的处理
2020-11-09 15:30:56 责编:小采
文档


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


下载本文
显示全文
专题