qq_31822385
血淋淋的加速
2017-07-24 07:39
采纳率: 22.2%
浏览 906

一个sql语句出了问题,麻烦大神给看一下啊,

sql语句
select dd.* from (
select distinct rp.apply_id
from t_r_p rp
where rp.r_status != 1
and rp.apply_id not in(select di.apply_id
from t_d_i di
where di.deduct_type in (1, 2, 3)
and di.deduct_status = 3)
and rp.END_DATE < to_date('2017-07-24','yyyy-mm-dd')
)a
wher rownum <= 500 )dd where dd.rn>0 ;

在Oracle中执行报错:
SQL Error [933] [42000]: ORA-00933: SQL command not properly ended

java.sql.SQLSyntaxErrorException: ORA-00933: SQL命令没有正确结束

到底那个不对了?审查了好几遍,还是错误
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • u014074697
    张大教主 2017-07-24 07:55
    已采纳
    肯定不对啊,首先,括号不对等,)a对应的集合的select不存在,其次500后面的括号是中文的,最后dd.rn>0,dd如果结果集来自rp,那么rp表中只有一个字段是aaply_id,a表字段补齐,并且查询集合rp中要包含a查询的字段 ,如下:
    select dd.* from (
        select 字段 from (
            select distinct rp.apply_id,rp.字段
            from t_r_p rp
            where rp.r_status != 1
            and rp.apply_id not in(
                select di.apply_id from t_d_i di 
                where di.deduct_type in (1, 2, 3) 
                and di.deduct_status = 3
            )
            and rp.END_DATE < to_date('2017-07-24','yyyy-mm-dd')
        )a 
    where rownum <= 500 
    )dd 
    where dd.字段>0 ;
    
    点赞 评论
  • HackAge4619

    在PLSQL中 执行一下,写错的地方回报红提示

    点赞 评论
  • strutce
    丵鹰 2017-07-24 07:44
     SELECT
        dd.*
    FROM
        ((------------------加了一个括号
            SELECT DISTINCT
                rp.apply_id
            FROM
                t_r_p rp
            WHERE
                rp.r_status != 1
            AND rp.apply_id NOT IN (
                SELECT
                    di.apply_id
                FROM
                    t_d_i di
                WHERE
                    di.deduct_type IN (1, 2, 3)
                AND di.deduct_status = 3
            )
            AND rp.END_DATE < to_date ('2017-07-24', 'yyyy-mm-dd')
        ) a where rownum <= 500 )dd-----------------中文括号改成英文括号
    WHERE
        dd.rn > 0;
    
    点赞 评论
  • liyankaipoi
    liyankaipoi 2017-07-24 07:47

    他说SQL命令没有正确结束可能就是多一个括号或者少一个括号之类的

    点赞 评论
  • yushiyoufight
    半杯凉月 2017-07-24 07:54

    图片说明

    点赞 评论
  • wuqiwei521
    奔跑的鱿鱼 2017-07-24 07:57

    这种情况 就是括号的问题 好好检查一下 就会发现

    点赞 评论
  • yyyyyni
    yyyyyni 2017-07-24 08:07

    检查“)a”与“)dd”前面对应的部分就知道了。

    点赞 评论
  • binyun530
    binyun530 2017-07-24 08:23

    and di.deduct_status = 3)

    多了个括号

    点赞 评论
  • binyun530
    binyun530 2017-07-24 08:31

    不是,是少了前部的东西
    SELECT dd.* FROM(SELECT a.* FROM ( select distinct rp.apply_id

    点赞 评论

相关推荐