日期:2014-05-17  浏览次数:20713 次

从一个表中取出记录,同时加一列,这一列的数据来源语另外一个表,在线等待中!!!
从一个表中取出记录,同时加一列,这一列的数据来源语另外一个表
意思是取表etsnsr中对应的每组(yh_zh,nsrnbm)在NSRYHZH表中取出   按xy_bj,xy_sj排序后的第一条记录对应的YX_QSRQ   。
有语法错误,该怎么改?          
    select   t.yh_zh,
                  (select   YX_QSRQ
                        from   (select   row_number()   over(order   by   xy_bj   desc   ,xy_sj   desc)   as   rn,
                                                  YX_QSRQ
                                        from     NSRYHZH
                                      where   yh_zh   =   t.yh_zh
                                          and   nsrnbm   =   t.nsrnbm)      
                      where   rn   =   1),
                    t.nsrnbm      
        from   etsnsr     t  
      --   执行提示:ORA-00904:   "T ". "NSRNBM ":   invalid   identifier
但是下面的语句又可以,难道是select嵌套层次太多    
    select   t.yh_zh,
                  (select   YX_QSRQ
                        from   NSRYHZH
                                      where   yh_zh   =   t.yh_zh
                                          and   nsrnbm   =   t.nsrnbm   and   rownum=1  
                                          /*   order   by   xy_bj   desc   ,xy_sj   desc   因为rownum=1所以order   by   将不期作用*/)      
                      where   rn   =   1),
                    t.nsrnbm      
        from   etsnsr     t

------解决方案--------------------
不好意思,只是给你找了下错误,具体没研究!
------解决方案--------------------
select t.yh_zh,
(select YX_QSRQ
from (select row_number() over(order by xy_bj desc) as rn,
a.YX_QSRQ
from T_DJ_NSRYHZH a,T_DJ_ETSNSR_YF tt
where a.yh_zh = tt.yh_zh
and a.nsrnbm = tt.nsrnbm)
where rn = 1),
t.nsrnbm
from T_DJ_ETSNSR_YF t