我需要创建一个case语句,它将返回以下内容
Cust_id Indicator Date Case
101 Y 5/1/2014 5/1/2014
101 Y 5/4/2014 5/4/2014
101 Y 5/8/2014 5/8/2014
101 N 5/8/2014 5/8/2014
101 N 5/12/2014 5/8/2014
101 N 5/14/2014 5/8/2014
101 Y 5/18/2014 5/18/2014
指标列将在Y和N之间交替。当列为Y时,它会抓取日期并将其返回到案例列中。当前一个指标是Y并且当前指标是N时,它抓住前一个日期,该日期将继续,直到遇到另一个Y.在上面的例子中,我不确定如何让5/8/2014继续,直到我到达下一个Y(2014年5月18日)。
对不起,这很复杂,但上表应该有助于澄清。我想我需要使用子查询和窗口函数,但我完全没有想法。我已经在这方面工作了好几个小时,我的同事没有想法,所以非常感谢任何帮助。
提前谢谢你。
答案 0 :(得分:1)
你可以通过做一个有条件的累积最大值来做到这一点:
select cust_id, indicator, date,
max(case when indicator = 'y' then date end) over (partition by cust_id
order by date) as NewCol
from table t;