- 爱易网页
-
Oracle教程
- 从一个表中取出记录,同时加一列,这一列的数据来源语另外一个表,待中!
日期:2014-05-17 浏览次数:20833 次
从一个表中取出记录,同时加一列,这一列的数据来源语另外一个表,在线等待中!!!
从一个表中取出记录,同时加一列,这一列的数据来源语另外一个表
意思是取表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