【发布时间】:2017-08-04 04:28:25
【问题描述】:
我是 PL/SQL 新手
我有这样的代码
SELECT f.code,f.date,f.amt, row_number() OVER (PARTITION BY f.code ORDER BY f.date DESC) ranki
FROM advance.alloc f
并显示
CODE DATE AMT ranki
122 12/31/2016 3 1
122 12/31/2015 7 2
122 12/31/2014 3 3
123 6/30/2015 3 1
125 6/30/2015 2 1
125 12/31/2014 8 2
逻辑是这样的
if DATE = 12/__/__ AND ranki = 1 THEN ranki 1, so 122 picks 12/31/2016 3
if DATE = 6/30/__ AND ranki = 1 AND if ranki = 2 exists THEN then pick the second one,so 125 picks 12/31/2014 8
if 6/30__ and ranki is ONLY 1 shows Blank on date LIKE 123
所以我想展示
122 12/31/2016 3
123 __________ 3
125 12/31/2014 8
如何编写这样的 PL/SQL 代码?
WHEN to_char(af.date,'MM') = 12 AND af.ranki = 1 THEN af.date END
我可以编写第一个逻辑,但我不知道如何编写其余的逻辑
谢谢
【问题讨论】: