有几张表没有权限,所以跑不起来。

目测黄色部分比较坑爹,死了n多脑细胞才看懂,又死了n多脑细胞才改出来。对5034进行了2次扫描,并多次分组排序求和。(分组和排序算法相对来说比较耗性能)

改为只扫描一次,一次编号操作。

 

这个没有什么既定的规则,就是使劲想各种奇葩办法简化。(这个改写就是利用了oracle在排序的时候,把null当成无穷大。而在sqlserver上就不适用了,因为sqlserver在排序的时候把null当无穷小)

 

黄色部分可改为下面的代码。

select *

FROM (select f1_5034,

decode(min(rn_a) - 1, 1, 0, min(rn_a) - 1) ylqk,

min(rn_b) - 1 bbqk

from (select case

when nvl(f25_5034, 0) > 0 then null

else rn end rn_a,

case

when f25_5034 Is not Null then null

else rn end rn_b,

f1_5034

from (Select f1_5034,

f3_5034,

f25_5034,

row_number() Over(partition By f1_5034 Order By f3_5034 Desc) rn

From wind.tb_object_5034

Where f3_5034 Like '%1231'))

group by f1_5034)

where bbqk is not null

--------------------原代码-------------------------

Select fdate,zqdm,zqmc,jysc,xzjq,dqsyl,fsynx,ffxjg,fpmje,fsqpmlv,ffxcs,ffxfs,fscfxr,

fssdd,fjxqsr,jxjzr,fxgm,cqxypj,dqxypj,'NULL' gjxypj,jhht,fldzrdb,ffxgsdm,fgsjc,zqlx,nvl(bbqk,0) bbqk,fxrq,

Case When nvl(zzc,0)<>0  Then 1 Else 0 End As xxplqk,ylqk ylqk,

hxzbczl,zzc,jzc,DbrXyPj,rzzt,shzt,'1' lsyjs,Jjbz, cxsmc, cxqsr,cxjzr,bjyy,lvlx,syyhdb,FCqXypj,FDqXypj,FGjxypj,FGnxypjJgd,FGjxypjJgd,DCqXypj,

'NULL' DGjxypj,flvjz,'NULL' FYsSyr, '0' fsdq ,'NULL' fsdqsr ,'NULL' fsdjzr ,'NULL' Fsdjzr2 ,fjcjq,flljq, '1' ffxzt,flvjzlb,'1' Ffxlx, fdbrdm,fdbr,Fdbrxz,FdbrSnmJzc,fsndgncqxy,Fdbrgnpjjg,

Ffxrlb,fzgr,fzgjzr,x.f13_5015 fzgbl,x.f12_5015 fzgjg, 'NULL' fzgzqdm,fsfsh,'NULL' fjkyy,fdbrzt,fggxx,

(Select F68_1854

From wind.tb_object_1854 T

Where nvl(BbQk, 0) >= 1

And F1_1854 = F25_4516

And F4_1854 = '合并报表'

And substr(F2_1854, 5, 8) = '1231'

And f2_1854 = (Select Max(f2_1854)

From Wind.tb_object_1854

Where T.f1_1854 = f1_1854

And substr(F2_1854, 5, 8)='1231'

And f4_1854 = '合并报表')) fsnlr,

(Select F68_1854

From wind.tb_object_1854 T

Where nvl(BbQk,0) >= 2

And F1_1854 =F25_4516

And F4_1854 ='合并报表'

And substr(F2_1854, 5, 8) = '1231'

And f2_1854 = (Select substr(Max(f2_1854),1,4)-1||'1231'

From Wind.tb_object_1854

Where T.f1_1854 = f1_1854

And substr(F2_1854, 5, 8)='1231'

And f4_1854 = '合并报表')) fqnlr,

(Select F68_1854

From wind.tb_object_1854 T

Where nvl(BbQk,0) >= 3

And F1_1854 =F25_4516

And F4_1854 ='合并报表'

And substr(F2_1854, 5, 8) = '1231'

And f2_1854 = (Select substr(Max(f2_1854),1,4)-2||'1231'

From Wind.tb_object_1854

Where T.f1_1854 = f1_1854

And substr(F2_1854, 5, 8)='1231'

And f4_1854 = '合并报表')) fdqnlr,

(Select F140_1853

From wind.tb_object_1853 T

Where nvl(BbQk, 0) >= 1

And F1_1853 = F25_4516

And F4_1853 = '合并报表'

And substr(F2_1853, 5, 8) = '1231'

And f2_1853 = (Select Max(f2_1853)

From Wind.tb_object_1853

Where T.f1_1853 = f1_1853

And substr(F2_1853, 5, 8)='1231'

And f4_1853 = '合并报表'))  FsnmfxrNav

,  Ffxrdchqyz

From (

(SELECT to_char(&PlanTime - 1, 'YYYYMMDD') fdate,

f1_4516 zqdm,

f2_4516 zqmc,

f43_4516,

f25_4516,

f40_1429,

Case

When f12_4516 = '上交所' Then '1'

When f12_4516 = '深交所' Then '2'

When f12_4516 = '银行间' Then '3'

Else '4' End As jysc,

Case

When f2_1639 = to_char(&PlanTime - 1, 'YYYYMMDD') Then f5_1639

Else  0

End As xzjq,

Case

When f2_1639 = to_char(&PlanTime - 1, 'YYYYMMDD') Then  f3_1639 Else Null End As dqsyl,

Case

When f2_1639 = to_char(&PlanTime - 1, 'YYYYMMDD') Then  f9_1639

Else  0

End As fsynx,

f8_4516 ffxjg,

f7_4516 fpmje,

f5_4516 fsqpmlv,

f9_4516 ffxcs,

Case

When F10_4516 = '4' Then  '1'

When F10_4516 = '0' Then  '2'

When F10_4516 = '1' Then  '3'

When F10_4516 = '2' Then  '4'

When F10_4516 = '3' Then  '5'

Else  Null  End As ffxfs,

(Select Min(f8_1270)  From wind.tb_object_1270  Where F1_1270 = F43_4516) fscfxr,

Case f13_4516

When '上交所' Then 'H'

When '深交所' Then 'S'

When '银行间' Then 'Y'

Else Null End As fssdd,

f3_4516 fjxqsr,

f4_4516 jxjzr,

F26_4516 * 100000000 fxgm,

Case

When f47_1429 Is Not Null Then  '1'

Else '0' End As jhht,

Case

When F48_1429 = '不可撤销连带责任担保' Then '1'

End As fldzrdb,

f25_4516 ffxgsdm,

f24_4516 fgsjc,

Case

When F17_4516 = '321' Then '1'

When F17_4516 = '333' Then '3'

When F17_4516 = '322' And F29_1429 Is Null Then '2'

When F17_4516 = '322' And F29_1429 = '公司债' Then '11'

When F17_4516 = '322' And F29_1429 = '中期票据' Then '13'

When F17_4516 = '323' And F29_1429 <> '可分离转债' Then '4'

When F17_4516 = '323' And F29_1429 = '可分离转债' Then '12'

When F17_4516 = '310' And F29_1429 Is Null Then '6'

When F17_4516 = '310' And F29_1429 Is Not Null Then '14'

When F17_4516 In ('331', '340') Then '7'

When F17_4516 = '341' Then '8'

When F17_4516 = '342' Then '9'

Else '0 '

End As zqlx,

f20_4516 fxrq,

Case

When F29_1429 = '可转债' Then

'中国证券监督管理委员会'

When F4_1090 = 'Q' And F29_1429 Not In ('中期票据', '短期融资券') Then

'发展和改革委员会'

Else 'NULL'

End As shzt,

Case

When (F32_1429 Like '%铁路%' And F47_1429 = '2002638') Or

(F32_1429 Like '%三峡%' And F47_1429 = '2002650') Then  '1'

Else   '0'  End As Jjbz,

nvl((Select t.ob_object_name_1020 From Wind.tb_object_1020 t

Where f27_1429=t.ob_object_id),'NULL') CxsMc,

f15_4516 cxqsr,

f16_4516 cxjzr,

Null bjyy,

Case

When f34_1429 = '贴现' Then   '贴现债券'

When f11_1429 = '固定利率' Then '固定利率'

When f11_1429 = '累进利率' Then '浮动利率-固定利率'

When f11_1429 = '浮动利率' Then '浮动利率-市场利率'

Else  Null End As lvlx,

Case

When f48_1429 = '不可撤销连带责任担保' Then  1 Else  0 End As syyhdb,

NVL((SELECT f4_1703 - f39_1429

FROM wind.tb_object_1703

Where f1_1703 = f1_1429

And f3_1703 = (SELECT Min(f3_1703)

FROM wind.tb_object_1703

Where f1_1703 = f1_1429)),0) flvjz,

NVL(f15_1639,0) fjcjq,

NVL(f16_1639,0) flljq,

Case

When f47_1429 Is Not Null Then  f47_1429 Else 'N' End As fdbrdm,

Case

When f34_1018 = F47_1429 Then ob_object_name_1018 Else 'N' End As fdbr,

Case

When f34_1018 = F47_1429 And F40_1018 = 2 Then '1' Else  '2'  End As Fdbrxz,

Case

When f34_1018 = F47_1429 And F40_1018 = '2' And

F41_1018 = 49 Then  '105'

When f34_1018 = F47_1429 And F40_1018 <> '2' And

F41_1018 = 49 Then  '205'

When f34_1018 = F47_1429 And F40_1018 = '2' And

F41_1018 <> 49 Then  '1'

When f34_1018 = F47_1429 And F40_1018 <> '2' And

F41_1018 <> 49 Then '2'

When f34_1018 = F47_1429 And F41_1018 = '25' Then '3'

When f40_1429='2000850' Then '2'

Else  '4'  End As Ffxrlb,

Case

When Exists (Select 1

From wind.tb_object_1269

Where f1_1269 = f25_4516

And f85_1269 Is Null) Then  1

Else  0 End As fsfsh,

Case

When f34_1018 = F47_1429 And F41_1018 = '11' Then  '1'

When f34_1018 = F47_1429 And F41_1018 = '29' Then '2'

When f34_1018 = F47_1429 And F41_1018 = '4' Then '3'

When f34_1018 = F47_1429 And F41_1018 = '27' Then '4'

When f34_1018 = F47_1429 And ob_object_name_1018 = '中国人民银行' Then '5'

When f34_1018 = F47_1429 And F41_1018 = '25' Then '6'

When f34_1018 = F47_1429 And F41_1018 = '3' Then '7'

Else '8' End As fdbrzt,

(Select f7_1271

From wind.tb_object_1271

Where f1_1271 = f43_4516) fzgjzr,

nvl((SELECT f3_1735

FROM wind.tb_object_1735 a

Where F1_1735 = F43_4516

And F2_1735 = '长期信用评级'

And f4_1735 = (SELECT Max(f4_1735)

FROM wind.tb_object_1735 b

Where a.f1_1735 = b.f1_1735

And b.f2_1735 = '长期信用评级')

And rownum = 1),'NULL') cqxypj,

NVL((SELECT f3_1735

FROM wind.tb_object_1735 c

Where F1_1735 = F43_4516

And F2_1735 = '短期信用评级'

And f4_1735 = (SELECT Max(f4_1735)

FROM wind.tb_object_1735 d

Where F43_4516 = d.f1_1735

And F2_1735 = '短期信用评级')

And rownum = 1),'NVLL') dqxypj,

NVL((SELECT f4_1454

FROM wind.tb_object_1454 c

Where F1_1454 = F25_4516

And F54_1454 = '408001000'

And f2_1454 = (SELECT Max(f2_1454)

FROM wind.tb_object_1454 d

Where F25_4516 = d.f1_1454

And F54_1454 = '408001000')),0) hxzbczl,

NVL((SELECT f145_1853

FROM wind.tb_object_1853 c

Where F1_1853 = F25_4516

And F4_1853 = '合并报表'

And f2_1853 = (SELECT Max(f2_1853)

FROM wind.tb_object_1853 d

Where F25_4516 = d.f1_1853

And F4_1853 = '合并报表')),0) zzc,

NVL((SELECT f140_1853

FROM wind.tb_object_1853 c

Where F1_1853 = F25_4516

And F4_1853 = '合并报表'

And f2_1853 = (SELECT Max(f2_1853)

FROM wind.tb_object_1853 d

Where F25_4516 = d.f1_1853

And F4_1853 = '合并报表')),0) jzc,

NVL((Select f4_1734

From wind.tb_object_1734 a, wind.tb_object_0004

Where ob_object_name_1018 = f1_0004

And f3_0004 = f2_1734

And f5_1734 = (Select Max(f5_1734)

From wind.tb_object_1734 b

Where b.f1_1734 = a.f1_1734)

And rownum = 1),'NULL') DbrXyPj,

Case

When f41_1018 = '11' Then '1'

When f41_1018 = '29' Then '2'

When f41_1018 In ('4', '5') Then '3'

When f41_1018 = '49' And OB_OBJECT_NAME_1018 = '中国人民银行' Then '5'

When f41_1018 = '17' Then '6'

Else  '7' End As rzzt,

nvl((SELECT f4_1734

FROM wind.tb_object_1734 c

Where F2_1734 = F25_4516

And F3_1734 = '长期信用评级'

And f5_1734 = (SELECT Max(f5_1734)

FROM wind.tb_object_1734 d

Where c.f1_1734 = d.f1_1734

And d.F3_1734 = '长期信用评级')

And rownum = 1),'NULL') FCqXypj,

NVL((SELECT f4_1734

FROM wind.tb_object_1734 c

Where F2_1734 = F25_4516

And F3_1734 = '短期信用评级'

And f5_1734 = (SELECT Max(f5_1734)

FROM wind.tb_object_1734 d

Where c.f1_1734 = d.f1_1734

And d.F3_1734 = '短期信用评级')

And rownum = 1),'NULL') FDqXypj,

'NULL' FGjxypj,

NVL((Select f6_1734

FROM wind.tb_object_1734 c

Where F2_1734 = F25_4516

And f5_1734 = (Select Max(f5_1734)

From wind.tb_object_1734 d

Where c.f1_1734= d.f1_1734)

And rownum = 1),'NULL') FGnxypjJgd,

'NULL' FGjxypjJgd,

nvl((SELECT f4_1734

FROM wind.tb_object_1734 c

Where F2_1734 = F25_4516

And F3_1734 = '长期信用评级'

And f5_1734 = (SELECT Max(f5_1734)

FROM wind.tb_object_1734 d

Where c.f1_1734 = d.f1_1734

And d.F3_1734 = '长期信用评级')

And rownum = 1

),'NULL') DCqXypj,

(SELECT Case

When F4_1641 = '1年期定期存款利率' Then  2082

When F4_1641 = '半年期定期存款利率' Then   2061

When F4_1641 = '三个月定期存款利率' Then  2070

When F4_1641 = '7天回购定盘平均值' Then  4016

When F4_1641 = '7天回购利率平均值' And f6_1641 = 'B2W' Then 4003

When F4_1641 = '7天回购利率平均值' And f6_1641 = 'B_2W' Then 4002

When F4_1641 = '7天回购利率平均值' And f6_1641 = 'B_1M' Then 3976

When F4_1641 = 'LIBOR' And f6_1641 = 'LIBOR_6M-USD' Then 5041

When F4_1641 = 'SHIBOR' And f6_1641 = 'SHIBOR_3M(10)' Then 7480

When F4_1641 = 'SHIBOR' And f6_1641 = 'SHIBOR_3M(5)' Then  7606

When F4_1641 = 'SHIBOR' And

f6_1641 = 'SHIBOR_1W(120)' Then 7942

When F4_1641 = 'SHIBOR' And f6_1641 = 'SHIBOR_1Y(10)' Then 9595

When F4_1641 = 'SHIBOR' And f6_1641 = 'SHIBOR_1Y(20)' Then 13216

End x FROM wind.tb_object_1641  Where f1_1641 = f43_4516) flvjzlb,

NVL((SELECT f140_1853

FROM wind.tb_object_1853

Where F1_1853 = F47_1429

And F4_1853 = '合并报表'

And f2_1853 = (SELECT Max(f2_1853)

FROM wind.tb_object_1853

Where F1_1853 = F47_1429

And F4_1853 = '合并报表')),0) FdbrSnmJzc,

NVL((SELECT f4_1734

FROM wind.tb_object_1734 c

Where F2_1734 = F25_4516

And F3_1734 = '长期信用评级'

And f5_1734 = (SELECT Max(f5_1734)

FROM wind.tb_object_1734 d

Where  c.f1_1734 = d.f1_1734

And c.F3_1734 = '长期信用评级')

And rownum = 1),'NULL') fsndgncqxy,

NVL((Select f6_1734

FROM wind.tb_object_1734 c

Where F2_1734 = F25_4516

And F3_1734 = '长期信用评级'

And f5_1734 = (Select Max(f5_1734)

From wind.tb_object_1734 d

Where  c.f1_1734 = d.f1_1734

And F3_1734 = '长期信用评级')

And rownum = 1),'NULL') Fdbrgnpjjg,

(Select Max(f3_5015) From wind.tb_object_5015  Where  f2_5015 =f43_4516 And f12_5015 Is Not Null And f13_5015 Is Not Null ) fzgr

From wind.tb_object_4516

Left Join wind.tb_object_1639 On F1_1639 = F43_4516

And f2_1639 =

to_char(&PlanTime - 1, 'YYYYMMDD')

Left Join wind.tb_object_1429 On F1_1429 = F43_4516 And (F30_1429>=to_char(&PlanTime,'yyyymmdd') Or F30_1429 Is Null)

Inner Join wind.tb_object_1090 On f1_1429 = f2_1090

Left Join wind.tb_object_1018 On F25_4516 = F34_1018) a

--取报表情况和盈利情况

Left Join (Select a.f1_5034, decode(ylqk, 1, 0, ylqk) ylqk, bbqk

From (Select f1_5034, nvl(Min(rn) - 1, Sum) ylqk

From (Select f1_5034,f3_5034,f25_5034,row_number() Over(partition By f1_5034 Order By f3_5034 Desc) rn,

Sum(1) Over(partition By f1_5034) Sum

From wind.tb_object_5034 Where f3_5034 Like '%1231') t

Where nvl(f25_5034, 0) <= 0

Group By f1_5034, Sum) a,

(Select f1_5034, nvl(Min(rn) - 1, Sum) bbqk

From (Select f1_5034, f3_5034, f25_5034,row_number() Over(partition By f1_5034 Order By f3_5034 Desc) rn,

Sum(1) Over(partition By f1_5034) Sum

From wind.tb_object_5034 Where f3_5034 Like '%1231') t

Where f25_5034 Is Null

Group By f1_5034, Sum) b

Where a.f1_5034 = b.f1_5034) tt On a.ffxgsdm = tt.f1_5034

--fggxx字段

Inner Join (Select Distinct f1_4516, f2_4516,

Case When F37_1673 Is Null And Not Exists

(Select 1

From wind.tb_object_1673 b

Where f37_1673 Is Not Null

And b.f1_1673 = a.f1_1673) Then  1 Else  0 End As fggxx

From wind.tb_object_4516

Left Join wind.tb_object_1673 a On f1_1673 = f25_4516) xx On a.zqdm =

xx.f1_4516

And a.zqmc =

xx.f2_4516

-- 取转股比例和转股价格字段                                                                         

Left Join wind.tb_object_5015 x On  a.f43_4516 =x.f2_5015  And x.f3_5015=a.fzgr

--取企业(公司)债券发行人待偿还的企业债券余额

Left Join (Select f40_1429 ,Sum(f3_1640*10000) Ffxrdchqyz  From wind.tb_object_1429,wind.tb_object_1640 Where (F30_1429> to_char(&PlanTime-1,'yyyymmdd') Or F30_1429 Is Null)

And F1_1640=F1_1429

Group By f40_1429) yy On a.f40_1429=yy.f40_1429

)

优化笔记:jsyhjkzqxx_D_20140916.gz的更多相关文章

  1. 优化笔记: jxrsfxrxx_D_20140916.gz

    表的重复扫描.   ----------------------------------想进一步研究,继续往下看------------------------------ 1.       所有相似 ...

  2. 优化笔记:pfyhparopenfundinfotest_D_20140916.gz

    性能瓶颈在函数的乱用.原代码黄色部分. 12分钟->35秒 ------------------------------------------------------------------- ...

  3. Android App性能优化笔记之一:性能优化是什么及为什么?

    By Long Luo   周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住 ...

  4. (转)MySQL优化笔记(八)--锁机制超详细解析(锁分类、事务并发、引擎并发控制)

    当一个系统访问量上来的时候,不只是数据库性能瓶颈问题了,数据库数据安全也会浮现,这时候合理使用数据库锁机制就显得异常重要了. 原文:http://www.jianshu.com/p/163c96983 ...

  5. U3D开发性能优化笔记(待增加版本.x)

    http://blog.csdn.net/kaitiren/article/details/45071997 此总结由自己经验及网上收集整理优化内容 包括: .代码方面: .函数使用方面: .ui注意 ...

  6. CMU Convex Optimization(凸优化)笔记1--凸集和凸函数

    CMU凸优化笔记--凸集和凸函数 结束了一段时间的学习任务,于是打算做个总结.主要内容都是基于CMU的Ryan Tibshirani开设的Convex Optimization课程做的笔记.这里只摘了 ...

  7. 移动web性能优化笔记

    移动web性能优化 最近看了一些文章,对移动web性能优化方法,做一个简单笔记 笔记内容主要出自 移动H5前端性能优化指南和移动前端系列——移动页面性能优化

  8. mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化

    可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...

  9. nginx优化笔记(keepalive、https等)

    一.nginx之tcp_nopush.tcp_nodelay.sendfile 1.TCP_NODELAY你怎么可以强制 socket 在它的缓冲区里发送数据?一个解决方案是 TCP 堆栈的 TCP_ ...

随机推荐

  1. Java跨平台的原理--java跨平台是通过JVM实现的

    孙鑫视频---笔记(1-3) java跨平台是通过JVM(java 虚拟机)实现的. Java应用程序的开发周期: 编译.下载.解释.执行. 1.java源文件的编译过程 java编译程序将java源 ...

  2. xcode好玩的条件断点设置. 可以真人发声。

    哈哈.设置个条件断点. 然后 Logmessage  or speak message 挺有意思. 一听就知道是哪个断点触发了.

  3. 利用pandas随机切分csv文件

    把数据集随机切分为训练集和测试集 method 1: df = pd.read_csv('data/tgnb_merge.csv', encoding='utf-8') df.drop_duplica ...

  4. node.js 之爬虫

    1. cheerio 与 request request:模拟客户端行为,对页面进行请求 cheerio:对服务器端返回的页面进行解析: var cheerio = require('cheerio' ...

  5. caffe学习记录2——blobs

    参考:caffe官网  2016-01-23 10:08:22 1 blobs,layers,nets是caffe模型的骨架 2 blobs是作者写好的数据存储的“容器”,可以有效实现CPU和GPU之 ...

  6. crm 02--->讲师页面及逻辑

    要求: 讲师 批量初始化 考勤 录入成绩 批量初始化 考勤与批量初始化这两个功能都要放在课程记录表中CourseRecord # 批量初始化 # 将该班的所有学生,初始化带某一天,而不是将每个学生一个 ...

  7. js工具类的封装

    common.js原生js实现的大多工具方法都将放在common文件中 布局rem.js,vue开发时,我们只需要将rem.js再main.js中import 引入即可 (function(win, ...

  8. 【解题报告】13级个人结业赛(二) ——动(dou)态(bu)规(hui)划(zuo)专场

    额.果然是动(dou)态(bu)规(hui)划(zuo)专场... A: 翻倍序列 dp[i][j]表示第i个位置是j的情况的个数那么dp[i][j]=∑dp[i-1][k]   (j%k==0)初始 ...

  9. (转)spring AOP探索

    原文地址:http://www.cnblogs.com/zuoxiaolong/p/spring6.html 自己整理后,供自己学习方便: 目前由AOP联盟给出了AOP的标准,AOP联盟的规范只是提供 ...

  10. Dapper.Contrib 开发.net core程序,兼容多种数据库

    Dapper.Contrib 开发.net core程序,兼容多种数据库 https://www.cnblogs.com/wuhuacong/p/9952900.html 使用Dapper.Contr ...