小编Pau*_*aul的帖子

挑战SQL以查找复杂分组中的先前记录

提前感谢您花时间阅读本文,希望能帮助我找到解决方案.我已经被困了好几天(但似乎更多).

我有一个Oracle表,有6个主要列:
1.分组(字符)
2.策略号(字符(7) - 但带前导零的数字)
3.续订号码(字符(2) - 但带前导零的数字)
4 .版本号(字符(4) - 但带前导零的数字)
5.生效日期
6.到期日期

没有列被索引,但它们是索引列.

我需要做的是:
1.查找当前有效的所有记录([到期日期]> Sysdate)
2.找到以前的保单号

结果我想得到:

ID  Group  Policy    Renew      Ver    PrevID   PrevRenew   PrevVer
10    A      0001234    04     0003      3          04        0002
22    B      0001111    00     0001      12         00        0000
44    A      0003332    01     0000      31         00        0000
55    C      0003332    28     0010      4          28        0009
Run Code Online (Sandbox Code Playgroud)

规则是:
- 策略和组始终保持不变
- 不同的策略可以存在于不同的组下
- 当策略更新版本从"0000"开始时
- 结果可能包括当前有效的策略和另一个将来有效的策略.以前的政策当然是当前的政策

我坚持的棘手部分是,如果Ver是'0000'并且我将Renew的值减少1以获得PrevRenew,但是然后需要获得版本的最大值以获得PrevVer.

我创建SQL的尝试已经奏效,但它们非常慢.也许你知道一种简单而快捷的方法来完成我正在尝试的结果吗?如果它有用,我会非常乐意发布我所拥有的内容.

非常感谢!

sql oracle oracle10g

2
推荐指数
1
解决办法
1902
查看次数

查找帐户达到零时的日期

感谢您抽出宝贵时间来检查我的问题.

我试图想办法在帐户达到0时返回日期

样本数据:

DATE      ACCOUNT  AMOUNT
11/01     001        100
11/02     002         50
11/03     001       -100 
11/07     001         20
11/15     002        -50
11/20     001        -20
Run Code Online (Sandbox Code Playgroud)

想要的结果:

Account   ZeroDate
001       11/03
002       11/15
001       11/20
Run Code Online (Sandbox Code Playgroud)

到目前为止,我还没有找到任何有用的东西.你能指出我正确的方向吗?

再次感谢您!

sql oracle oracle10g

1
推荐指数
1
解决办法
86
查看次数

标签 统计

oracle ×2

oracle10g ×2

sql ×2