遇到问题:多表关联查询,有一个要求是,同一保单号,对应多个投资产品Code.以及投资比例,每一个保单号有一个总的投资金额。要求同一保单号那一行,只有第一个总金额有值,剩下的code对应的总金额置空。

简述问题:如果本行记录和上一行记录,某字段值相同,则怎么处理,另外一列的值。

样例SQL如下。

   select rownum  序号 ,
ld.comcode 分公司,
'B2B' 来源,
ed.tranno 银行交易号,
(select bb.newcontno
from b2b_contno bb
where trim(bb.oldcontno) = trim(lc.contno)) 保单号新,
lc.contno 保单号旧,
lc.appntname 投保人,
ms.pol_status 保单状态,
ed.makedate 客户申请日期,
ms.UPD_DATE 保全受理日期,
lead(to_char(ed.fingetamt),(select count(*)-1 from EdorAPDetail),null) over (partition by lc.contno order by lc.contno) as 购买总金额,
ea.accountcode 基金代码,
(select b.CODE_DES from bankandinsurercodemapping b where b.COMCode = 'ICBC'
and b.CODETYPE = 'accounttype' and trim(b.BANK_CODE) = trim(ea.accountcode)) 基金名称,
ea.accountpercent 购买比例,
'现金' 支付方式,
ed.bankcode 银行代码,
ed.accnumber 账号,
ed.bak1 户名,
ld.name 营业单位,
la.agentcom 代理人编号,
la.name 代理人姓名,
ed.appntphone 投保人电话
from lccont lc, --日志表
lacom la, --银行代理机构表
edoraddinsure ed, --保全业务表
ldcom ld, --保险分公司表
B2B_ITF_T_POL_MST ms, --ODS推数表
EdorAPDetail ea where ed.funcflag in (1020)
and lc.agentcom = la.agentcom
and ld.comcode = la.managecom
and ms.comp_code=ld.comcode and trim(ed.bankcode) = trim(lc.newbankcode)
and ed.bankcode='' and trim(lc.contno) = trim(ed.contno)
and trim(ms.pol_no) = trim(ed.contno)
and trim(ea.contno) = trim(ed.contno)

核心处理要点:

lead(to_char(ed.fingetamt),(select count(*)-1 from EdorAPDetail),null)  over (partition by  lc.contno order by lc.contno) as 购买总金额,

心得:Oracle中lead (mm,1,null) over(partition by bb order by tt)函数。本行记录和上一行记录比较,partition by  lc.contno相同的话,就给ed.fingetamt置空。并按某某顺序。

Oracle中本行记录和上一行记录进行比较lead over 函数处理的更多相关文章

  1. 【转】oracle 中随机取一条记录的两种方法

    oracle 中随机取一条记录的两种方法 V_COUNT INT:=0; V_NUM INT :=0; 1:TBL_MYTABLE 表中要有一个值连续且唯一的列FID BEGIN SELECT COU ...

  2. oracle中查找和删除重复记录的几种方法总结

    平时工作中可能会遇到当试图对库表中的某一列或几列创建唯一索引时,系统提示 ORA-01452 :不能创建唯一索引,发现重复记录. 下面总结一下几种查找和删除重复记录的方法(以表CZ为例): 表CZ的结 ...

  3. Oracle中的二进制、八进制、十进制、十六进制相互转换函数

    原文:Oracle中的二进制.八进制.十进制.十六进制相互转换函数 Oracle中的二进制.八进制.十进制.十六进制相互转换函数   今天在网上看到一篇关于在oracle中对各种进制数进行转换的帖子, ...

  4. Oracle 中按条件过滤重复记录

    在数据处理中,经常会遇到类似这样的情况:数据库中存在多条记录,其中某些字段值相同,其他字段值不同.实际的业务需要针对这样的情况,只保留一条数据,其他数据删除.如何做到呢?在sql中有top关键字相对容 ...

  5. Oracle之多行记录变一行记录,行变列,并排序(wmsys.wm_concat)

    原帖:http://www.cnblogs.com/nayitian/p/3231734.html wmsys.wm_concat Definition: The Oracle PL/SQL WM_C ...

  6. ORACLE中的MERGE语法使用记录

    项目中使用到了Oracle的MERGE INTO语句,在这里简单记录下使用方法 使用场景如下: 存在对一张数据量很大的表,你需要对里面的大量数据进行更新,如果数据不存在,就进行插入的操作. 常规想到的 ...

  7. Oracle中查询前10条记录

    在Oracle怎样查询表中的top10条记录呢? select * from test where rownum <=10     ----说明:rownum只能用于<或<=运算,如 ...

  8. Oracle中查询和删除相同记录的3种方法

    --创建测试表 )); ,'); ,'); ,'); ,'); ,'); ,'); commit; select * from test; --查询相同记录 ); select id,name fro ...

  9. oracle中replace、length、lengthb、substr、substrb函数

    1.replacereplace(x,y,z)返回值为将字符串X中的Y串用Z串替换后的结果字符串. replace(x,y)返回值将字符串X中为Y串的地方删除例:epacel('aaabbb','bb ...

随机推荐

  1. ubuntu sh脚本双击运行

    自从13.04以后,双击sh脚本文件就已经默认是geidt打开了,要想运行,从nautilus-->文件-->首选项-->行为-->可执行文件 有三个选项,默认是第二个,如果想 ...

  2. 怎么样能让自己的虚拟机上网win7 for linux

    我的电脑是win7 32位 虚拟机是linux 我是通过无线连接互联网的 点无线网络连接 右键 点共享 按照我的方式设置 接下来进入 里面会自动的选择这个 如果没有可以自己按照这个设置 接下来进入虚拟 ...

  3. Eclipse配置Flex开发环境(转)

    Eclipse配置Flex开发环境 开发环境:Eclipse3.2.Flex Builder31.下载安装Flex Builder3,下载地址:http://subject.csdn.net/adob ...

  4. iOS:模态弹出窗控制器UIPopoverPresentationController

    模态弹出窗控制器:UIPopoverPresentationController 实质:就是将内容控制器包装成PopoverPresentationController的形式,然后再模态出来,必须指定 ...

  5. JapserReport导出PDF Could not load the following font错误

    iText和iTextAsian的jar包的版本必须匹配!

  6. json 得到时分秒为00:00:00,拿不到时分秒 解决办法

    数据库查询时间没有了时分秒的解决办法        问题出处,公司一个项目中使用动态sql方式查询Oracle数据库,在展示时Date类型字段只展示日期,无时分秒.        分析:        ...

  7. hdu - 2102 A计划 (简单bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目还是不难,注意起点一定是(0,0,0),然后到达P点时间<=t都可以. 用一个3维字符数组存储图 ...

  8. mongodb unset/set 删除/增加字段

    删除全部文档的name字段 db.users.update({},{$unset: {"name":""}},{nulti:true}) 增加全部文档的name ...

  9. 设置Sublime Text2 中代码提示

    打开sublime text的菜单 Preferences -> Package Settings -> GoSublime ->Settings – User  然后输入 { &q ...

  10. poj 1195 mobile phone

    题目连接: 题意:要求设计这样一个数据结构,支持下列操作 1.add(x,y,a).对二维数组的第x行,第y列加上a. 2.sum(l,b,r,t).求所有满足l<=x<=r,b<= ...