Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
Brownie
Contributor III
Contributor III

End Date from stat date of the next row.

Screenshot_14.png TopScreenshot_15.pngScreenshot_16.png

Can anyone help me out solve this problem. I need the last marketing's value to be todays Date.  also, the order must be same as this nothing should be different.

Labels (3)
1 Solution

Accepted Solutions
RsQK
Creator II
Creator II

Hi, this should do it:

 

temp:
LOAD
ROWNO() AS original_sort,
EID,
DID,
DN,
DATE(DATE#(SD,'MM/DD/YYYY')) AS SD
INLINE [
EID|DID|DN|SD
1|1|IT|1/1/1995
1|2|Sales|12/1/2005
1|5|Finance|1/1/2015
2|1|IT|1/1/1995
2|3|Marketing|12/1/2008
3|2|Sales|1/1/1995
4|3|Marketing|1/1/2010
] (DELIMITER IS '|');

temp2:
NOCONCATENATE
LOAD * RESIDENT temp
ORDER BY EID,SD DESC;

DROP TABLE temp;

temp3:
LOAD *,
DATE(IF(PREVIOUS(EID)=EID,PEEK(SD)-1,TODAY())) AS EndDate
RESIDENT temp2;

DROP TABLE temp2;

Final:
NOCONCATENATE
LOAD * RESIDENT temp3
ORDER BY original_sort;

DROP TABLE temp3;
DROP FIELD original_sort;

 

View solution in original post

2 Replies
RsQK
Creator II
Creator II

Hi, this should do it:

 

temp:
LOAD
ROWNO() AS original_sort,
EID,
DID,
DN,
DATE(DATE#(SD,'MM/DD/YYYY')) AS SD
INLINE [
EID|DID|DN|SD
1|1|IT|1/1/1995
1|2|Sales|12/1/2005
1|5|Finance|1/1/2015
2|1|IT|1/1/1995
2|3|Marketing|12/1/2008
3|2|Sales|1/1/1995
4|3|Marketing|1/1/2010
] (DELIMITER IS '|');

temp2:
NOCONCATENATE
LOAD * RESIDENT temp
ORDER BY EID,SD DESC;

DROP TABLE temp;

temp3:
LOAD *,
DATE(IF(PREVIOUS(EID)=EID,PEEK(SD)-1,TODAY())) AS EndDate
RESIDENT temp2;

DROP TABLE temp2;

Final:
NOCONCATENATE
LOAD * RESIDENT temp3
ORDER BY original_sort;

DROP TABLE temp3;
DROP FIELD original_sort;

 

Brownie
Contributor III
Contributor III
Author

Ohh heyy!!! 

Thankyou soo muchh !!!