従業員が給与グループに入ったときにeffective date
を見つける必要があります。これは、雇用日、再就職日、または譲渡日のいずれか遅い日に発生したかのいずれかです。私がしたいと思うのは、最も最近の有効日の一時テーブルを作成することですwhere C1.ACTION=('XFR') AND C1.PAYGROUP=A.PAYGROUP
、そのテーブルにnot
のアソシエイトがある場合は、私にmost recent hire date
を与えてください。有効日従業員が入力した給与グループ
- がスタック従業員DTAのトップである
- Bがスタック個人データのトップである
- C全体の従業員レコード
最近入社日があるさ
CASE WHEN A.HIRE_DT<=A.REHIRE_DT THEN A.REHIRE_DT
ELSE A.HIRE_DT END MOST_REC_HIREDT
FYI私はこのクエリが本当に台無しであることを知っているので、私は助けを求めています。
SELECT DISTINCT
A.EMPLID
A.FIRST_NAME||' '||A.LAST_NAME WORKERNAME,
CASE
WHEN(Select Max(C1.EFFDT) FROM JOB C1
WHERE (C.EMPLID=C1.EMPLID
AND C1.ACTION=('TAF')
AND C1.PAYGROUP=A.PAYGROUP
AND C1.EFFDT>=(CASE WHEN A.HIRE_DT<A.REHIRE_DT THEN =A.REHIRE_DT
ELSE A.HIRE_DT END MR_HIRE_DT)))
WHEN A.EMPLID NOT IN JOB C1
THEN (CASE WHEN A.HIRE_DT<=A.REHIRE_DT
THEN A.REHIRE_DT
ELSE A.HIRE_DT END MR_HIRE_DT2)
ELSE 'Null' END EFFDT,
A.PAYGROUP
FROM EMPLOYEES A, PERSONAL_DATA B, JOB C
WHERE
A.EMPLID=B.EMPLID
AND
B.EMPLID=C.EMPLID
AND
A.PAYGROUP=C.PAYGROUP
AND
C.EMPL_STATUS in ('A','L','P','S')
解決策は次のとおりです。各テーブルの "サンプルデータ"、次に "期待結果" –
そのクエリのテーブルBはどこですか?適切なANSI結合を使用できますか?より良いクエリを作成するのに役立ちます –
各テーブルのサンプルデータと、結果として得たい出力を含めてください。また、 'FROM'節にカンマがある場合は、何か間違っている可能性が最も高いです。適切な 'JOIN'を使用してください。 –