Click here to Skip to main content
15,887,676 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
SQL
I have insert statements too below -

with inputs (REGID, Pkg_DES, PRD_DESC, EVENT_DATE, event_type_cd) as      (select 1 , CC , trail , to_date('12/12/2016', 'mm/dd/yyyy') , new sub from dual union all 
select 1 , CC , trail ,to_date('12/13/2016', 'mm/dd/yyyy') , exp from dual union all

select 1 , CC , PAID , to_date('12/14/2016', 'mm/dd/yyyy') , upsell from dual union all 
select 1 , CC , PAID , to_date('12/15/2016', 'mm/dd/yyyy'), exp from dual union all 
select 1 , CC , PAID , to_date('12/16/2016', 'mm/dd/yyyy') , renewal from dual union all 
select 1 , CC , PAID , to_date('12/17/2016', 'mm/dd/yyyy') , renewal from dual union all
select 1 , aa , trail , to_date('12/12/2016', 'mm/dd/yyyy') , new sub from dual union all 
select 1 , aa , trail , to_date('12/13/2016', 'mm/dd/yyyy') , exp from dual union all

select 1 , aa , PAID , to_date('12/14/2016', 'mm/dd/yyyy') , renewal from dual union all 
select 1 , aa , PAID , to_date('12/15/2016', 'mm/dd/yyyy') , renewal from dual union all 
select 1 , aa , PAID , to_date('12/16/2016', 'mm/dd/yyyy') , upsell from dual union all 
select 1 , aa , PAID , to_date('12/17/2016', 'mm/dd/yyyy') , renewal from dual



C#
I have the requirement like this below

REG_ID , PACKAGE_DESC , PRODUCT_TYPE_DESC , EVENT_DATE , event_type_cd
1 , CC , trail , 12-12-2012 , new sub
1 , CC , trail , 12-13-2012 , exp
1 , CC , PAID , 12-14-2012 , upsell
1 , CC , PAID , 12-15-2012 , exp
1 , CC , PAID , 12-16-2012 , renewal
1 , CC , PAID , 12-17-2012 , renewal
1 , aa , trail , 12-12-2012 , new sub
1 , aa , trail , 12-13-2012 , exp
1 , aa , PAID , 12-14-2012 , renewal
1 , aa , PAID , 12-15-2012 , renewal
1 , aa , PAID , 12-16-2012 , upsell
1 , aa , PAID , 12-17-2012 , renewal

The OutPut i need is like below

REG_ID,Pkg_DES,PRD_DESC,EVENT_DATE,event_type_cd,renewal_cnt,is_ren, is_conv
1 , CC , trail , 12-12-2012 , new sub , 0 , 0 ,0
1 , CC , trail , 12-13-2012 , exp , 0 , 0 ,0
1 , CC , PAID , 12-14-2012 , upsell , 0 , 0 , 1
1 , CC , PAID , 12-15-2012 , exp , 0 , 0 , 1
1 , CC , PAID , 12-16-2012 , renewal , 1 , 1 , 0
1 , CC , PAID , 12-17-2012 , renewal , 2 , 1 , 0
1 , aa , trail , 12-12-2012 , new sub , 0 , 0 , 0
1 , aa , trail , 12-13-2012 , exp , 0 , 0 , 0
1 , aa , PAID , 12-14-2012 , renewal , 0 , 0 , 1
1 , aa , PAID , 12-15-2012 , renewal , 1 , 1 , 0
1 , aa , PAID , 12-16-2012 , upsell , 2 , 1 , 0
1 , aa , PAID , 12-17-2012 , renewal , 3 , 1 , 0

Conversion Logic :- If a PRD_DESC is changed from Trail to Paid for the 1st time, then it is called CONVERSION product  

Renewal Logic :- If a Paid Product is renewed from Paid to Paid, then it is called RENEWAL product  

renewal_cnt should start only at the PAID to PAID product. If the PAID to PAID is having event_type_cd as exp then the counter shouldn't increment. If the trail to paid is having event_type_cd as renewal then also it should be zero only. the event's are ordered by event_date   

is_conv should be set to 1 for the 1st Trail to Paid product.  

is ren should be set to 1 for the paid to paid product.  

Does someone have the idea how to achieve this?


What I have tried:

I have tried to use Rank function and derive the Renewal Counter, but it didn't worked. :(
Posted
Updated 10-Aug-16 19:28pm

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900