SELECT r.xm ,
r.sfzjhm ,
r.hjdxzqh,
hjdxxdz ,
r.csrq ,
r.hyzk ,
r.zfxm ,
(SELECT COUNT(*) rzs FROM l_zn WHERE sfzjhm = r.sfzjhm AND xb = '1'
) rzs ,
(SELECT COUNT(*) rzs FROM l_zn WHERE sfzjhm = r.sfzjhm AND xb = '2'
) nrs ,
r.bzkdm ,
(SELECT hyzcsx
FROM
(SELECT hyzcsx
FROM l_rs
WHERE fxhyrq IS NOT NULL
AND sfzjhm = r.sfzjhm
AND rownum = 1
ORDER BY fxhyrq DESC
)
) zcsx ,
r.xjdxzqh,
r.xjdxxdz ,
r.ldzt ,
r.jdsj ,
r.lrddjrq ,
r.lcrq ,
(SELECT zs
FROM
(SELECT floor((sysdate-fxhyrq)/7) zs
FROM l_rs
WHERE fxhyrq IS NOT NULL
AND rsjg NOT IN ('10','11','12','20','21','22','23','30','40','90')
AND sfzjhm = r.sfzjhm
AND rownum = 1
ORDER BY fxhyrq DESC
)
) hyzs ,
r.hkxz ,
r.zmblzt
FROM l_ldry r
r.sfzjhm ,
r.hjdxzqh,
hjdxxdz ,
r.csrq ,
r.hyzk ,
r.zfxm ,
(SELECT COUNT(*) rzs FROM l_zn WHERE sfzjhm = r.sfzjhm AND xb = '1'
) rzs ,
(SELECT COUNT(*) rzs FROM l_zn WHERE sfzjhm = r.sfzjhm AND xb = '2'
) nrs ,
r.bzkdm ,
(SELECT hyzcsx
FROM
(SELECT hyzcsx
FROM l_rs
WHERE fxhyrq IS NOT NULL
AND sfzjhm = r.sfzjhm
AND rownum = 1
ORDER BY fxhyrq DESC
)
) zcsx ,
r.xjdxzqh,
r.xjdxxdz ,
r.ldzt ,
r.jdsj ,
r.lrddjrq ,
r.lcrq ,
(SELECT zs
FROM
(SELECT floor((sysdate-fxhyrq)/7) zs
FROM l_rs
WHERE fxhyrq IS NOT NULL
AND rsjg NOT IN ('10','11','12','20','21','22','23','30','40','90')
AND sfzjhm = r.sfzjhm
AND rownum = 1
ORDER BY fxhyrq DESC
)
) hyzs ,
r.hkxz ,
r.zmblzt
FROM l_ldry r
解决方案 »
- oracle tom的html_mail数据库写邮件的疑问,请兄弟们给个解答,谢谢
- drop表的索引会导致过程失效么?
- sql列转行问题
- 游标可以作为另一个存储过程的输入参数吗?
- 循环执行存储过程
- 存储过程中怎么把查到结果集table的取出来?
- 已有两个表为主子表,表中已有数据。现想建簇提高查询性能,应该怎样操作?
- 请问oracle能不能装在没有网卡的机器上,如果能的话,他和本地客户是怎么通讯的
- 请教一个菜鸟问题!!!
- 在NLS_LANG=WE8ISO8859P1,数据库字符集为UTF16的环境下用Oralce OLEDB操作汉字的朋友吗?
- 关于行转列。。。
- 关于SQL语句的连接以及储存过程的问题
RYBM VARCHAR2(23 BYTE) Yes
SFZJHM VARCHAR2(30 BYTE) Yes
XM VARCHAR2(100 BYTE) Yes
CSRQ DATE Yes
XB VARCHAR2(1 BYTE) Yes
HKXZ VARCHAR2(3 BYTE) Yes
MZ VARCHAR2(3 BYTE) Yes
HYZK VARCHAR2(3 BYTE) Yes
WHCD VARCHAR2(3 BYTE) Yes
ZFRYBM VARCHAR2(23 BYTE) Yes
ZFSFZJLX VARCHAR2(2 BYTE) Yes
FZSFZJHM VARCHAR2(30 BYTE) Yes
ZFXM VARCHAR2(100 BYTE) Yes
ZFCSRQ DATE Yes
ZFHJDDM VARCHAR2(12 BYTE) Yes
ZFHKXZ VARCHAR2(1 BYTE) Yes
ZFMZ VARCHAR2(3 BYTE) Yes
ZFHYZK VARCHAR2(2 BYTE) Yes
ZFWHCD VARCHAR2(3 BYTE) Yes
ZMBLZT VARCHAR2(1 BYTE) Yes
HYZMHM VARCHAR2(20 BYTE) Yes
SFLDSZ VARCHAR2(1 BYTE) Yes
DQBYZK VARCHAR2(30 BYTE) Yes
BZKDM VARCHAR2(3 BYTE) Yes
HYDJRQ DATE Yes
HYFZJG VARCHAR2(60 BYTE) Yes
HJDXZQH VARCHAR2(12 BYTE) Yes
HJDXXDZ VARCHAR2(200 BYTE) Yes
HJDYZBM CHAR(6 BYTE) Yes
XJDXZQH VARCHAR2(80 BYTE) Yes
XJDXXDZ VARCHAR2(200 BYTE) Yes
XJZDYZBM CHAR(6 BYTE) Yes
LCRQ DATE Yes
FHRQ DATE Yes
LRDDJRQ DATE Yes
LRDTCRQ DATE Yes
LDLX VARCHAR2(1 BYTE) Yes
LDZT VARCHAR2(1 BYTE) Yes
SFTC VARCHAR2(1 BYTE) Yes
TCYY VARCHAR2(1 BYTE) Yes
SFBSGL VARCHAR2(1 BYTE) Yes
DJDW VARCHAR2(12 BYTE) Yes
LDYY VARCHAR2(1 BYTE) Yes
JDSJ DATE Yes
l_zn表结构
ID VARCHAR2(10 BYTE) No
SFZJHM VARCHAR2(30 BYTE) Yes
XM VARCHAR2(30 BYTE) Yes
CSRQ DATE Yes
XB VARCHAR2(1 BYTE) Yes
HC VARCHAR2(1 BYTE) Yes
XYGX VARCHAR2(1 BYTE) Yes
DQJKZK VARCHAR2(2 BYTE) Yes
ZCSX VARCHAR2(1 BYTE) Yes
FUKSRQ DATE Yes
FYJSRQ DATE Yes
FYJSYY VARCHAR2(1 BYTE) Yes
ZNRYBM VARCHAR2(23 BYTE) Yes
l_rs表结构
ID VARCHAR2(10 BYTE) No
SFZJHM VARCHAR2(18 BYTE) Yes
FXHYRQ DATE Yes
FXHYZS VARCHAR2(3 BYTE) Yes
MCYJRQ DATE Yes
HYZCSX VARCHAR2(1 BYTE) Yes
RSJG VARCHAR2(2 BYTE) Yes
JCRQ DATE Yes
CSRQ DATE Yes
) rzs ,
(SELECT COUNT(*) rzs FROM l_zn WHERE sfzjhm = r.sfzjhm AND xb = '2'
) nrs ,可以合并,按照1,2分组统计即可先看看执行计划吧,哪里慢吧
FROM
(SELECT hyzcsx
FROM l_rs
WHERE fxhyrq IS NOT NULL
AND sfzjhm = r.sfzjhm
ORDER BY fxhyrq DESC
) where rownum = 1
) zcsx , (SELECT zs
FROM
(SELECT floor((sysdate-fxhyrq)/7) zs
FROM l_rs
WHERE fxhyrq IS NOT NULL
AND rsjg NOT IN ('10','11','12','20','21','22','23','30','40','90')
AND sfzjhm = r.sfzjhm
ORDER BY fxhyrq DESC
) where rownum = 1
) hyzs这表的数据有多少?执行时间大概多少?
) rzs ,
(SELECT COUNT(*) rzs FROM l_zn WHERE sfzjhm = r.sfzjhm AND xb = '2'
) nrs ,
SELECT zs
FROM
(SELECT floor((sysdate-fxhyrq)/7) zs
FROM l_rs
WHERE fxhyrq IS NOT NULL
AND rsjg NOT IN ('10','11','12','20','21','22','23','30','40','90')
AND sfzjhm = r.sfzjhm
ORDER BY fxhyrq DESC
) where rownum = 1
) hyzs这三部分 效率太低 还有就是 最里层的L_ldry r的别名r不起作用 以前在10g 32位上还起作用 现在10g64位居然不起作用
tb2 as(SELECT sfzjhm rzs FROM l_zn WHERE xb = '2') ,
tb3 as (SELECT floor((sysdate-fxhyrq)/7) zs,sfzjhm
FROM l_rs
WHERE fxhyrq IS NOT NULL
AND rsjg NOT IN ('10','11','12','20','21','22','23','30','40','90')
ORDER BY fxhyrq DESC)
(select count(1) from tb1 where sfzjhm = r.sfzjhm) rzs ,
(select count(1) from tb2 where sfzjhm = r.sfzjhm) nrs ,
(select zs from(select zs from tb3 where sfzjhm = r.sfzjhm)where rownum=1) hyzs