【DM版本】: 达梦8
【操作系统】:Windows server 2012
【问题描述】:
运行sql:
SELECT* FROM (
SELECT 'YES' AS "Object")t
PIVOT( COUNT(1) FOR t."Object" IN('YES' as YES, 'NO' as NO)) AS p
运行结果正常:
在这个版本运行版本1一样的SQL,PIVOT会显示无效
在实际排查版本2问题过程中发现因为“OBJECT”是关键字会导致PIVOT失效,如果字段别名换成非关键字则可以避免这个问题,如下所示
但是无论版本1还是版本2普通SELECT语句别名使用到关键字只要加上双引号“”是能正常运行的,但是只有版本2的PIVOT语法会出现上述情况
一开始怀疑是否是数据库参数配置问题,但是看了一圈版本1和版本2的数据库参数配置列表没能找到,所以请问这是数据库版本BUG还是说我没有找到正确配置项?
双引号是主要引起的原因,大小混写和全小写会出问题。临时绕过方案,先不加双引号。到时帮你提个需求。
SELECT* FROM (
SELECT 'YES' AS "Dd")t
PIVOT( COUNT(1) FOR t."Dd" IN('YES' as YES, 'NO' as NO)) AS p ;
SELECT* FROM (
SELECT 'YES' AS "dd")t
PIVOT( COUNT(1) FOR t."dd" IN('YES' as YES, 'NO' as NO)) AS p ;
SELECT* FROM (
SELECT 'YES' AS "DD")t
PIVOT( COUNT(1) FOR t."DD" IN('YES' as YES, 'NO' as NO)) AS p ;
看着应该是个BUG。