[oracle] count()函数使用错误字段导致的查询失败(聚合函数聚合字段与分组字段不一致)

一 错误的SQL语句(原始的,格式是直接从word中拷贝的,存在多个错误):

select to_char(t.fbsj, 'YYYY') as a, count(t.fbsj) from (

select fbsj from ods_t_ky_lw

    where

      to_char(FBSJ, 'YYYY') <= to_char(sysdate, 'YYYY')

        and

        to_char(FBSJ, 'YYYY') >= to_char(sysdate, 'YYYY') - 7) t

group by a ;

 附:建表语句及数据

链接: https://pan.baidu.com/s/1Qhv0ajPtefdqXd2P2LVXdw 提取码: q4bb 

 

二 调试过程

1 调整一(可执行的):

1.1 取出来子sql直接执行,发现不行,报错ora-00911:invalid character

1.2 使用的是navicat这个工具,按说关键字是应该有颜色提示的,除非关键字没有被正确是被正确识别到,想到可能是因为sql中间有些oracle不认可的不可见字符,可以把所有空白符都删掉,自行处理分隔,如下即ok(如果直接拷贝使用,可能放到navicat里面还是要重新编辑一下):

select fbsj from ods_t_ky_lw where

to_char(FBSJ, 'YYYY') <= to_char(sysdate, 'YYYY')

and

to_char(FBSJ, 'YYYY') >= to_char(sysdate, 'YYYY') - 7

 

2 调整二(不可执行)

直接加上外层sql,无法执行,说明外层sql还是有问题,SQL及报错如下:

select to_char(t.fbsj, 'YYYY') as a, count(

你可能感兴趣的:(oracle,SQL)