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

Announcements
Join us in Bucharest on Sept 18th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
microwin88x
Creator III
Creator III

Solved

Solved

1 Solution

Accepted Solutions
sunny_talwar

May be this:

TABLE_2:

LOAD DATE_2,

    ID_PROVIDER,

    ZONE

FROM

[https://community.qlik.com/thread/193014]

(html, codepage is 1252, embedded labels, table is @2);

Table:

LOAD * INLINE [

    DATE_1, ID_PROVIDER, AMOUNT

    01/01/2015, 20, 10

    01/01/2015, 50, 85

    01/01/2015, 30, 25

    04/01/2015, 20, 21

    02/01/2015, 30, 44

    03/01/2015, 50, 25

    05/01/2015, 20, 46

    06/01/2015, 50, 87

    08/01/2015, 30, 47

    01/01/2015, 70, 100

];

Join(Table)

LOAD ID_PROVIDER,

  Date(MinDate + IterNo() - 1) as DATE_1

While MinDate + IterNo() - 1 <= MaxDate;

LOAD ID_PROVIDER,

  Max(DATE_2) as MaxDate,

  Min(DATE_2) as MinDate

Resident TABLE_2

Group By ID_PROVIDER;

FinalTable:

NoConcatenate

LOAD DATE_1,

  ID_PROVIDER,

  If(Len(Trim(AMOUNT)) = 0, Peek('AMOUNT'), AMOUNT) as AMOUNT

Resident Table

Order By ID_PROVIDER, DATE_1;

Left Join (TABLE_2)

LOAD DATE_1 as DATE_2,

  ID_PROVIDER,

  AMOUNT as LAST_AMOUNT

Resident FinalTable;

DROP Tables Table, FinalTable;


Capture.PNG

View solution in original post

3 Replies
sunny_talwar

May be this:

TABLE_2:

LOAD DATE_2,

    ID_PROVIDER,

    ZONE

FROM

[https://community.qlik.com/thread/193014]

(html, codepage is 1252, embedded labels, table is @2);

Table:

LOAD * INLINE [

    DATE_1, ID_PROVIDER, AMOUNT

    01/01/2015, 20, 10

    01/01/2015, 50, 85

    01/01/2015, 30, 25

    04/01/2015, 20, 21

    02/01/2015, 30, 44

    03/01/2015, 50, 25

    05/01/2015, 20, 46

    06/01/2015, 50, 87

    08/01/2015, 30, 47

    01/01/2015, 70, 100

];

Join(Table)

LOAD ID_PROVIDER,

  Date(MinDate + IterNo() - 1) as DATE_1

While MinDate + IterNo() - 1 <= MaxDate;

LOAD ID_PROVIDER,

  Max(DATE_2) as MaxDate,

  Min(DATE_2) as MinDate

Resident TABLE_2

Group By ID_PROVIDER;

FinalTable:

NoConcatenate

LOAD DATE_1,

  ID_PROVIDER,

  If(Len(Trim(AMOUNT)) = 0, Peek('AMOUNT'), AMOUNT) as AMOUNT

Resident Table

Order By ID_PROVIDER, DATE_1;

Left Join (TABLE_2)

LOAD DATE_1 as DATE_2,

  ID_PROVIDER,

  AMOUNT as LAST_AMOUNT

Resident FinalTable;

DROP Tables Table, FinalTable;


Capture.PNG

MarcoWedel

Hi,

another solution could be:

QlikCommunity_Thread_193014_Pic1.JPG

(different from your expected result because of the year-typo in your TABLE_1)

TABLE_1:

LOAD * FROM [https://community.qlik.com/thread/193014] (html, codepage is 1252, embedded labels, table is @1);

TABLE_2:

LOAD * FROM [https://community.qlik.com/thread/193014] (html, codepage is 1252, embedded labels, table is @2);

tabTemp:

LOAD DATE_1, ID_PROVIDER Resident TABLE_1;

Join

LOAD DATE_2, ID_PROVIDER Resident TABLE_2;

Right Join

LOAD *, AutoNumberHash128(DATE_1,DATE_2) as %DateKey;

LOAD Max(DATE_1) as DATE_1, DATE_2, ID_PROVIDER

Resident tabTemp

Where DATE_1<=DATE_2

Group By DATE_2, ID_PROVIDER;

Left Join (TABLE_1) LOAD DATE_1, ID_PROVIDER, %DateKey Resident tabTemp;

Left Join (TABLE_2) LOAD DATE_2, ID_PROVIDER, %DateKey Resident tabTemp;

DROP Table tabTemp;

hope this helps

regards

Marco

tripatirao
Creator II
Creator II

Hi Sunny

Got so much  basic concept  form this problem.

Thanks a lot.