12
返回列表 发新帖
楼主: wys245925008

[PL/SQL] 请教一下这个应该怎么写

[复制链接]
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
11#
发表于 2017-1-16 10:41 | 只看该作者

逻辑规则没有错,但按照LZ的意思,好像应该先找到一条 FLAG='N'的记录,然后以这条记录的 AMT,和 OS_BAL
为正确的基础才根据序号向上或向下推演

SQL> select ac_no,rn,amt,os_bal,flag
  2   from (
  3  select t.*, lag(os_bal,1) over(partition by ac_no order by rn) lag_val from ln_table t
  4  )
  5  where amt + os_bal = lag_val
  6    and flag = 'N'
  7    and rownum = 1
  8  /
AC_NO            RN       AMT    OS_BAL FLAG
-------- ---------- --------- --------- ----
0001              4       300      1500 N

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2017-1-16 11:32 | 只看该作者
非常感谢,不过有一个问题就是,我给的只是其中一个case,真实情况下,case的还款记录条数是不一样的,提前还款和正常还款的顺序也是不一定的,能不能给出一个通用的写法呢?

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
13#
发表于 2017-1-16 15:04 | 只看该作者

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表