Quantcast
Channel: SCN : Unanswered Discussions - Semantic Layer
Viewing all articles
Browse latest Browse all 1291

How to use recursive in Information Design Tools?

$
0
0

Hi all,

 

I want to use recursive for count number of employee in each organization. I write code something like this.

 

with EmpCTE as
(      select RootID = D.ORG_CD , D. ORG_CD, D .ParentOID      from  (SELECT     CURRENT_LEAF as ORG_CD ,               D .DATE_KEY AS DateKey,                    CASE WHEN LEAF_LEVEL = 1 THEN LEVEL0                               WHEN LEAF_LEVEL = 2 THEN LEVEL1                               WHEN LEAF_LEVEL = 3 THEN LEVEL2                               WHEN LEAF_LEVEL = 4 THEN LEVEL3                               WHEN LEAF_LEVEL = 5 THEN LEVEL4                               WHEN LEAF_LEVEL = 6 THEN LEVEL5                    END AS ParentOID       FROM [BISIPH_HR]. [dbo].[ORG_HIER_STD] H , MST_DATE_DIM D       where 1= 1       and D. DATE_KEY between BEGDA and ENDDA       and D. DATE_KEY between C_L1_BEGDA_KEY and C_L1_ENDDA_KEY       and D. DATE_KEY between C_L2_BEGDA_KEY and C_L2_ENDDA_KEY       and D. DATE_KEY between C_L3_BEGDA_KEY and C_L3_ENDDA_KEY       and D. DATE_KEY between C_L4_BEGDA_KEY and C_L4_ENDDA_KEY       and D. DATE_KEY between C_L5_BEGDA_KEY and C_L5_ENDDA_KEY       and D. DATE_KEY between C_L6_BEGDA_KEY and C_L6_ENDDA_KEY       and D. DATE_KEY between C_L7_BEGDA_KEY and C_L7_ENDDA_KEY       )   D      where 1= 1      AND DateKey = 20140101               union all         select EmpCTE. RootID, D .ORG_CD, D.ParentOID      from (        SELECT   CURRENT_LEAF as ORG_CD,               D .DATE_KEY AS DateKey,                    CASE WHEN LEAF_LEVEL = 1 THEN LEVEL0                               WHEN LEAF_LEVEL = 2 THEN LEVEL1                               WHEN LEAF_LEVEL = 3 THEN LEVEL2                               WHEN LEAF_LEVEL = 4 THEN LEVEL3                               WHEN LEAF_LEVEL = 5 THEN LEVEL4                               WHEN LEAF_LEVEL = 6 THEN LEVEL5                    END AS ParentOID       FROM [BISIPH_HR]. [dbo].[ORG_HIER_STD] H , MST_DATE_DIM D       where 1= 1       and D. DATE_KEY between BEGDA and ENDDA       and D. DATE_KEY between C_L1_BEGDA_KEY and C_L1_ENDDA_KEY       and D. DATE_KEY between C_L2_BEGDA_KEY and C_L2_ENDDA_KEY       and D. DATE_KEY between C_L3_BEGDA_KEY and C_L3_ENDDA_KEY       and D. DATE_KEY between C_L4_BEGDA_KEY and C_L4_ENDDA_KEY       and D. DATE_KEY between C_L5_BEGDA_KEY and C_L5_ENDDA_KEY       and D. DATE_KEY between C_L6_BEGDA_KEY and C_L6_ENDDA_KEY       and D. DATE_KEY between C_L7_BEGDA_KEY and C_L7_ENDDA_KEY       ) D      inner join EmpCTE on D .ParentOID = EmpCTE.ORG_CD      AND D. DateKey = 20140101
)
select distinct
ORG_DIM.ORG_CD
, ORG_DIM. ORG_DESC_T
, EmpCTE. ParentOID
--, EMP_DIM.EMP_CODE
, cnt. Child
, cntemp. ChildEmp
from MST_EMP_DIM EMP_DIM
INNER JOIN TXT_EMP_ORG_FACT EMP_ORG_FACT ON EMP_ORG_FACT .EMP_KEY = EMP_DIM.EMP_KEY
INNER JOIN MST_ORG_DIM ORG_DIM ON ORG_DIM .ORG_CD = EMP_ORG_FACT.ORG_CD
INNER JOIN EmpCTE ON EmpCTE .ORG_CD = ORG_DIM.ORG_CD
INNER JOIN TXT_EMPLOYMENT_FACT EMPLOYMENT_FACT ON EMPLOYMENT_FACT.EMP_CODE_KEY = EMP_ORG_FACT.EMP_CODE_KEY
INNER JOIN (       SELECT ORG_CD = RootID, Child = COUNT (*)       FROM EmpCTE       GROUP BY RootID
) cnt ON cnt.ORG_CD = EMP_ORG_FACT. ORG_CD ------------------ ¹Ñº¨Ó¹Ç¹ ORG ·ÕèÍÂÙèãµé ORG »Ñ¨¨ØºÑ¹
INNER JOIN (       SELECT ORG_CD = RootID, ChildEmp = Count (*)       FROM EmpCTE       INNER JOIN TXT_EMP_ORG_FACT EMP_ORG_FACT ON EmpCTE .ORG_CD = EMP_ORG_FACT.ORG_CD       INNER JOIN MST_EMP_DIM EMP_DIM ON EMP_ORG_FACT .EMP_KEY = EMP_DIM.EMP_KEY       INNER JOIN TXT_EMPLOYMENT_FACT EMPLOYMENT_FACT ON EMPLOYMENT_FACT.EMP_CODE_KEY = EMP_ORG_FACT.EMP_CODE_KEY       WHERE 1= 1       AND 20140228 BETWEEN EMP_ORG_FACT.ORG_ASSIGN_START_DT_KEY AND ORG_ASSIGN_END_DT_KEY       AND 20140228 BETWEEN EMP_DIM.EMP_START_DATE_KEY AND EMP_DIM.EMP_END_DATE_KEY       AND 20140228 BETWEEN EMPLOYMENT_FACT.START_DATE_KEY AND EMPLOYMENT_FACT.END_DATE_KEY       AND EMP_ORG_FACT. EMP_ASSIGN_PAYROLL_AREA_CD IN ('Z1', 'Z2')       AND EMPLOYMENT_FACT. EMPLOYMENT_STATUS_KEY = 3       GROUP BY RootID
) cntemp ON cntemp.ORG_CD = EMP_ORG_FACT. ORG_CD
WHERE 1= 1
AND 20140228 BETWEEN EMP_ORG_FACT.ORG_ASSIGN_START_DT_KEY AND ORG_ASSIGN_END_DT_KEY
AND 20140228 BETWEEN EMP_DIM.EMP_START_DATE_KEY AND EMP_DIM.EMP_END_DATE_KEY
AND 20140228 BETWEEN EMPLOYMENT_FACT.START_DATE_KEY AND EMPLOYMENT_FACT.END_DATE_KEY
AND EMP_ORG_FACT. EMP_ASSIGN_PAYROLL_AREA_CD IN ('Z1', 'Z2')
AND EMPLOYMENT_FACT. EMPLOYMENT_STATUS_KEY = 3
ORDER BY EmpCTE.ParentOID

and result

 

24-3-2014 9-20-30.png

 

I want to create ChildEmp object for display in web-i report. How can i use recursive in Information Design Tools? or Do you have other solution for this?

 

Thank you for your advise.

 

Notto Zung


Viewing all articles
Browse latest Browse all 1291

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>