首页 > 解决方案 > DB2 错误组合大小写、聚合、别名和分组依据

问题描述

这是一个更大的查询的一部分,但这个片段显示了错误。如果没有聚合和分组依据,则该语句有效。添加聚合和分组依据后,我收到此错误:

  1. [代码:-206,SQL 状态:42703]“COMPANYN”在使用它的上下文中无效.. SQLCODE=-206,SQLSTATE=42703,DRIVER=4.22.29
  2. [代码:-727,SQL 状态:56098] 隐式系统操作类型“2”期间发生错误。返回的错误信息包括 SQLCODE“-206”、SQLSTATE“42703”和消息标记“COMPANYN”。SQLCODE=-727、SQLSTATE=56098、DRIVER=4.22.29

下面是SQL:

SELECT s.SERVICE_NAME servicename,
       CASE
           WHEN (r.company IS NULL
                 OR r.company = ''
                 OR r.company = 'BTS')
                AND r.CREATED_BY like '%JBlake%' THEN 'ABC'
           ELSE r.company
       END companyN,
           r.CREATED_BY,
           count(1) NoOfHits
FROM ac.SSO_REQUEST r,
     ac.SSO_SERVICE s
WHERE s.id = r.DSO_SERVICE_ID
  AND r.CREATE_DATE > TO_DATE('06302018', 'MMDDYYYY')
  AND r.CREATE_DATE < TO_DATE('07012019', 'MMDDYYYY')
group by s.SERVICE_NAME, companyN, r.CREATED_BY

如果我注释掉聚合和分组依据,则查询有效。我认为companyN的别名在 group by 中引起了问题。

SELECT s.SERVICE_NAME servicename,
       CASE
           WHEN (r.company IS NULL
                 OR r.company = ''
                 OR r.company = 'BTS')
                AND r.CREATED_BY like '%JBlake%' THEN 'ABC'
           ELSE r.company
       END companyN,
           r.CREATED_BY--,
           --count(1) NoOfHits
FROM ac.SSO_REQUEST r,
     ac.SSO_SERVICE s
WHERE s.id = r.DSO_SERVICE_ID
  AND r.CREATE_DATE > TO_DATE('06302018', 'MMDDYYYY')
  AND r.CREATE_DATE < TO_DATE('07012019', 'MMDDYYYY')
--group by s.SERVICE_NAME, companyN, r.CREATED_BY

标签: sqldb2-luw

解决方案


我认为这回答了我的问题: sql-using-alias-in-group-by


推荐阅读