Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
qlikviewwizard
Master II
Master II

Salary distribution

Hi All,

I have the hierarchy Incharge1 > Incharge2 > Ename

If EndDt<StartDt then SAL  x amount should go to each Incharge1  & Incharge2

If EndDt is NULL then SAL should go to Ename

My report should show like the below:

EMPNO  Ename  StartDt  SAL

  

Sample Data:

How to achieve this? Please help me.

EMPNOEnameIncharge1Incharge2SALStartDtEndDt
1Ename1Ename5Ename12100012-May-1511-May-15
2Ename2Ename5Ename12200011-May-153-May-15
3Ename3Ename5Ename12300010-May-15
4Ename4Ename5Ename1210009-May-15
5Ename5Ename520008-May-15
6Ename6Ename5Ename1230007-May-15
7Ename7Ename11Ename12100012-May-1510-May-15
8Ename8Ename11Ename12200011-May-153-May-15
9Ename9Ename11Ename12300010-May-15
10Ename10Ename11Ename1210009-May-15
11Ename11Ename11Ename1220008-May-15
12Ename12Ename11Ename12300012-May-1511-May-15
13Ename13Ename11Ename12100011-May-15
14Ename14Ename11Ename9200010-May-15
15Ename15Ename11Ename9300012-May-15
16Ename16Ename11Ename9100011-May-1510-May-15
17Ename17Ename11Ename9200012-May-15
18Ename18Ename11Ename9300011-May-15
19Ename19Ename11Ename9100012-May-15
20Ename20Ename11Ename9200011-May-15
1 Solution

Accepted Solutions
robert_mika
Master III
Master III

t1:

LOAD EMPNO,

     Ename,

     Incharge1,

     Incharge2,

     SAL,

     StartDt,

     EndDt

FROM

[163767.xlsx]

(ooxml, embedded labels, table is Sheet1)

;

//If EndDt<StartDt then SAL  x amount should go to each Incharge1  & Incharge2

//If EndDt is NULL then SAL should go to Ename

t2:

load if(EndDt<StartDt,EMPNO) as empno,

if(EndDt<StartDt,Incharge1) as ename,

StartDt,

if(EndDt<StartDt,SAL) as SAL

resident t1

;

t3:

load if(EndDt<StartDt,EMPNO) as empno,

if(EndDt<StartDt,Incharge2) as ename,

StartDt,

if(EndDt<StartDt,SAL) as SAL

resident t1;

t4:

load

if(isnull(EndDt),EMPNO) as empno,

if(isnull(EndDt),Ename) as ename,

StartDt,

if(isnull(EndDt),SAL) as SAL

resident t1;

drop table t1

View solution in original post

2 Replies
stigchel
Partner - Master
Partner - Master

You could use something like the following

CrTmp:

Crosstable (Field,Ename,1) LOAD EMPNO,

    if(Trim(Len(EndDt))=0,Ename) as Ename,

    if(Trim(Len(EndDt))>0,if(Date#(EndDt,'DD-MMM-YY')<Date#(StartDt,'DD-MMM-YY'), Incharge1)) as Incharge1,

    if(Trim(Len(EndDt))>0,if(Date#(EndDt,'DD-MMM-YY')<Date#(StartDt,'DD-MMM-YY'), Incharge2)) as Incharge2

FROM

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

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

Enames:

Noconcatenate Load * Resident CrTmp;

Drop table CrTmp;

Data:

LOAD EMPNO,

  SAL,

    StartDt

FROM

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

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

You can join the tabless and and remove Field Field, but I left it in for checking, see also attached

robert_mika
Master III
Master III

t1:

LOAD EMPNO,

     Ename,

     Incharge1,

     Incharge2,

     SAL,

     StartDt,

     EndDt

FROM

[163767.xlsx]

(ooxml, embedded labels, table is Sheet1)

;

//If EndDt<StartDt then SAL  x amount should go to each Incharge1  & Incharge2

//If EndDt is NULL then SAL should go to Ename

t2:

load if(EndDt<StartDt,EMPNO) as empno,

if(EndDt<StartDt,Incharge1) as ename,

StartDt,

if(EndDt<StartDt,SAL) as SAL

resident t1

;

t3:

load if(EndDt<StartDt,EMPNO) as empno,

if(EndDt<StartDt,Incharge2) as ename,

StartDt,

if(EndDt<StartDt,SAL) as SAL

resident t1;

t4:

load

if(isnull(EndDt),EMPNO) as empno,

if(isnull(EndDt),Ename) as ename,

StartDt,

if(isnull(EndDt),SAL) as SAL

resident t1;

drop table t1