Crystal Report - Help Adding Fields to Existing Query

 1 Replies
 1 Subscribed to this topic
 22 Subscribed to this forum
Sort:
Author
Messages
Chris-T
New Member
Posts: 1
New Member
    Good afternoon,

    Let me start by stating that while I'm a DB person at my local hospital, I have never worked with Lawson data before. I've been requested to create an employee history report and thanks to the talented folks here, I have very nearly what I need.

    Would someone be able to assist me in adding two fields to this query - I'm looking to add the employee's prior supervisor and current supervisor (much like the current position and prior position).

    I believe the data I'm looking for is in the PAEMPPOS table, but I'm not entirely certain how to add it to this existing query.

    SELECT *
    FROM (
    SELECT PAH.COMPANY
    ,EMP.PROCESS_LEVEL
    ,PAH.EMPLOYEE
    ,PAH.EFFECT_DATE
    ,PAH.ACTION_CODE
    ,PAH.REASON_01
    ,PAH.REASON_02
    ,EMP.LAST_NAME
    ,EMP.FIRST_NAME
    ,EMP.MIDDLE_INIT
    ,PEM.SEX
    ,PEM.EEO_CLASS
    ,EMP.POSITION
    ,COALESCE((
    SELECT A_VALUE
    FROM (
    SELECT COMPANY
    ,EMPLOYEE
    ,BEG_DATE
    ,A_VALUE
    FROM PRODLAW.HRHISTORY HRH
    WHERE HRH.FLD_NBR = 126
    ORDER BY BEG_DATE DESC
    ) CUR_POS
    WHERE CUR_POS.COMPANY = PAH.COMPANY
    AND CUR_POS.EMPLOYEE = PAH.EMPLOYEE
    AND CUR_POS.BEG_DATE <= PAH.EFFECT_DATE
    AND rownum = 1
    ), ' ') AS CUR_POSITION
    ,COALESCE((
    SELECT A_VALUE
    FROM (
    SELECT COMPANY
    ,EMPLOYEE
    ,BEG_DATE
    ,A_VALUE
    FROM PRODLAW.HRHISTORY HRH
    WHERE HRH.FLD_NBR = 126
    ORDER BY BEG_DATE DESC
    ) PREV_POSITION
    WHERE PREV_POSITION.COMPANY = PAH.COMPANY
    AND PREV_POSITION.EMPLOYEE = PAH.EMPLOYEE
    AND PREV_POSITION.BEG_DATE < PAH.EFFECT_DATE
    AND rownum = 1
    ), ' ') AS PREV_POSITION
    ,COALESCE((
    SELECT A_VALUE
    FROM (
    SELECT COMPANY
    ,EMPLOYEE
    ,BEG_DATE
    ,A_VALUE
    FROM PRODLAW.HRHISTORY HRH
    WHERE HRH.FLD_NBR = 20
    ORDER BY BEG_DATE DESC
    ) CUR_STATUS
    WHERE CUR_STATUS.COMPANY = PAH.COMPANY
    AND CUR_STATUS.EMPLOYEE = PAH.EMPLOYEE
    AND CUR_STATUS.BEG_DATE <= PAH.EFFECT_DATE
    AND rownum = 1
    ), ' ') AS CUR_STATUS
    ,COALESCE((
    SELECT A_VALUE
    FROM (
    SELECT COMPANY
    ,EMPLOYEE
    ,BEG_DATE
    ,A_VALUE
    FROM PRODLAW.HRHISTORY HRH
    WHERE HRH.FLD_NBR = 20
    ORDER BY BEG_DATE DESC
    ) PREV_STATUS
    WHERE PREV_STATUS.COMPANY = PAH.COMPANY
    AND PREV_STATUS.EMPLOYEE = PAH.EMPLOYEE
    AND PREV_STATUS.BEG_DATE < PAH.EFFECT_DATE
    AND rownum = 1
    ), ' ') AS PREV_STATUS
    FROM PRODLAW.PERSACTHST PAH
    LEFT OUTER JOIN PRODLAW.EMPLOYEE EMP ON (EMP.COMPANY = PAH.COMPANY)
    AND (EMP.EMPLOYEE = PAH.EMPLOYEE)
    LEFT OUTER JOIN PRODLAW.PAEMPLOYEE PEM ON (PEM.COMPANY = PAH.COMPANY)
    AND (PEM.EMPLOYEE = PAH.EMPLOYEE)
    WHERE (PAH.COMPANY = 1000)
    AND (PAH.EFFECT_DATE BETWEEN to_date('2000-01-01', 'yyyy-mm-dd')
    AND to_date('2016-12-31', 'yyyy-mm-dd')
    )
    )
    WHERE CUR_POSITION <> PREV_POSITION
    OR CUR_STATUS <> PREV_STATUS;

    Thanks in advance for helping out a poor soul :)
    Jeff Shumate
    Advanced Member
    Posts: 31
    Advanced Member
      Our setup has Supervisor easily found in the EMPLOYEE table, but you could grab from PAEMPPOS if you have it set up, and your EEs can have multiple positions. I believe to get the prior supervisor, you will have to look at HRHISTORY, and HR10 will have to be set up to capture changes to the supervisor field.