岁月如灬风 2019-10-28 15:03 采纳率: 0%
浏览 146
已采纳

sql语句问题。。。。。。。。。。。。。。。。。。。

select count(*) as c
  from (select *
          from (select s.capgrade,
                       (select codename
                          from tb_tpost_code
                         where id = s.mpostid) mpostname,
                       (select codename
                          from tb_tpost_code
                         where id = s.spostid) spostname,
                       r.id,
                       r.username,
                       r.idcard,
                       to_char(r.scoredate, 'yyyy-mm-dd') scoredate,
                       r.score,
                       (select ut.sortname
                          from pxgl_unit ut
                         where ut.unitid = r.unitid) unitname_,
                       r.remark,
                       r.flowsta,
                       r.chksign,
                       r.noexamsign,
                       mainusername estauser,
                       to_char(r.estatime, 'yyyy-mm-dd') estatime,
                       i.itemname,
                       (select capgrade
                          from tb_tpost_userpost
                         where mpostid = s.mpostid
                           and spostid = s.spostid
                           and idcard = r.idcard) usercapgrade
                  from tb_tpost_skillresult  r,
                       tb_tpost_skillitem    i,
                       tb_tpost_skillstandar s
                 where ((r.noexamsign = 1 and to_char(r.estatime, 'yyyy') = 2019) or
                       to_char(scoredate, 'yyyy') = 2019)
                   and i.standarid = s.id
                   and i.id = r.yitemid
                   and i.flowsta = 99
                   and i.chksign = 1
                   and (r.flowsta >= 91)
                   and r.unitid in (1699)
                   and s.spostid = 2
                   and s.capgrade = 4
                 order by s.mpostid, s.spostid, s.capgrade, i.id, r.flowsta) p
         where nvl(capgrade, 0) != nvl((select capgrade
                                         from tb_tpost_userpost
                                        where mpostid = p.mpostid
                                          and spostid = p.spostid
                                          and idcard = p.idcard),
                                       0))

我这个语句哪里有问题,报错是ora-00904:"p"."spostid":无效的标识符,大神帮忙看一下。
单独跑以下代码的时候没问题:

select *
  from (select s.capgrade,
               (select codename from tb_tpost_code where id = s.mpostid) mpostname,
               (select codename from tb_tpost_code where id = s.spostid) spostname,
               r.id,
               r.username,
               r.idcard,
               to_char(r.scoredate, 'yyyy-mm-dd') scoredate,
               r.score,
               (select ut.sortname
                  from pxgl_unit ut
                 where ut.unitid = r.unitid) unitname_,
               r.remark,
               r.flowsta,
               r.chksign,
               r.noexamsign,
               mainusername estauser,
               to_char(r.estatime, 'yyyy-mm-dd') estatime,
               i.itemname,
               (select capgrade
                  from tb_tpost_userpost
                 where mpostid = s.mpostid
                   and spostid = s.spostid
                   and idcard = r.idcard) usercapgrade,
                   s.mpostid,
                   s.spostid
          from tb_tpost_skillresult  r,
               tb_tpost_skillitem    i,
               tb_tpost_skillstandar s
         where ((r.noexamsign = 1 and to_char(r.estatime, 'yyyy') = 2019) or
               to_char(scoredate, 'yyyy') = 2019)
           and i.standarid = s.id
           and i.id = r.yitemid
           and i.flowsta = 99
           and i.chksign = 1
           and (r.flowsta >= 91)
           and r.unitid in (1699)
           and s.spostid = 2
           and s.capgrade = 4
         order by s.mpostid, s.spostid, s.capgrade, i.id, r.flowsta) p
         where
         nvl(capgrade, 0) != nvl((select capgrade from tb_tpost_userpost where mpostid = p.mpostid and spostid = p.spostid and idcard = p.idcard), 0)
  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2019-10-28 15:19
    关注

    在线格式化了一下这个 SQL
    图片说明
    可能是最后的子查询表不是 p ,所以 Where 引用的字段不存在。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛