但行好事
莫论前程❤

Oracle报错缺少右括号

SELECT COUNT(1) ROWCOUNT
  FROM (SELECT EP.NAME,
               DECODE(EM.JXTYPE, 0,'统筹区记息',1,'单位记息',2,'个人记息') JXTYPE,
               DECODE(EB.ARRIVED_STATUS,0,'未到账',1,'统筹区到账',2,'归集户到账',
                      3,'受托到账') ARRIVED_STATUS,
               SUM(EB.ACCINTO_MONEY) AS ACCINTO_MONEY,
               SUM(EB.ACCINTO_INSTR) AS ACCINTO_INSTR
          FROM EPRK_ACCINTO_LX_B EB,
               EPRK_CORPORATION  EP,
               EPRK_ACCINTO_LX   EM,
               EPRK_AREAMANAGE   EA
         WHERE EB.PK_CORPORATION = EP.PK_CORPORATION
           AND EB.PK_AREAMANAGE = EA.PK_AREAMANAGE
           AND EB.PK_ACCINTO_LX = EM.PK_ACCINTO_LX
           AND EM.JXTYPE = 1
           AND EP.NAME LIKE '%扬州市党员电化教育中心%'
           AND EA.AREAMANAGECODE = '320682'
         GROUP BY EP.NAME,
                  DECODE(EM.JXTYPE,
                         0,'统筹区记息',1,'单位记息',
                         2,'个人记息') JXTYPE,
                  DECODE(EB.ARRIVED_STATUS,
                         0,'未到账',1,'统筹区到账',
                         2,'归集户到账',3,'受托到账')) 

报错ORA-00907 缺少有括号

  • 报错定位在
 GROUP BY EP.NAME,
     DECODE(EM.JXTYPE,
           0,'统筹区记息',1,'单位记息',
           2,'个人记息') JXTYPE,
     DECODE(EB.ARRIVED_STATUS,
           0,'未到账',1,'统筹区到账',
           2,'归集户到账',3,'受托到账')

报错原因:

  • group by 后面的参数不能起别名

注意:

  • 在mysql中,group by中可以使用别名;
  • where中不能使用别名;
  • order by中可以使用别名。
  • 其余像oracle,hive中别名的使用都是严格遵循sql执行顺序的,group by后面不能用别名。
  • mysql特殊是因为mysql中对查询做了加强。
赞(1) 打赏
未经允许不得转载:刘鹏博客 » Oracle报错缺少右括号
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏