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

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

  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

*/


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在HANA数据库中,要进行列转行的操作可以使用group_concat函数来实现。通过使用LEFT JOIN将两个表连接在一起,并使用group_concat函数将多行数据合并成一行,从而实现列转行的效果。例如,可以使用以下SQL查询语句实现列转行操作: SELECT u.name1, GROUP_CONCAT(r.rolename, ' ') FROM user1 u LEFT JOIN role r ON u.id = r.user_id GROUP BY u.name1; [3] 这个查询语句会将user1表和role表连接起来,然后根据u.name1进行分组,并使用group_concat函数将相同name1的多个rolename合并成一个字符串。通过这种方式,可以将多个行转换为一行,实现列转行的效果。请注意,这种方法在处理大量数据时可能会有限制,因为默认的类型是varchar类型,长度限制为4000,超过这个长度会报错。所以在处理大量数据时需要注意这个限制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【HANA系列】SAP HANA行列转换](https://blog.csdn.net/ARICK2014/article/details/101639998)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [数据库列转行函数](https://blog.csdn.net/JerryBal/article/details/81129364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值