SELECT JOBXX.EMPLID,JOBXX.EFFDT,JOBXX.ACT1,JOBXX.ACT2,JOBXX.ACT3,JOBXX.ACT4,JOBXX.ACT5
FROM
(SELECT SD.EMPLID,
SD.EFFDT,
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 1 THEN SD.A1 ELSE 0 END)),1,2)) ||
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 1 THEN SD.A1 ELSE 0 END)),3,2)) ||
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 1 THEN SD.A1 ELSE 0 END)),5,2))
AS ACT1,
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 2 THEN SD.A1 ELSE 0 END)),1,2)) ||
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 2 THEN SD.A1 ELSE 0 END)),3,2)) ||
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 2 THEN SD.A1 ELSE 0 END)),5,2))
AS ACT2,
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 3 THEN SD.A1 ELSE 0 END)),1,2)) ||
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 3 THEN SD.A1 ELSE 0 END)),3,2)) ||
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 3 THEN SD.A1 ELSE 0 END)),5,2))
AS ACT3,
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 4 THEN SD.A1 ELSE 0 END)),1,2)) ||
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 4 THEN SD.A1 ELSE 0 END)),3,2)) ||
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 4 THEN SD.A1 ELSE 0 END)),5,2))
AS ACT4,
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 5 THEN SD.A1 ELSE 0 END)),1,2)) ||
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 5 THEN SD.A1 ELSE 0 END)),3,2)) ||
CHR(SUBSTR(TO_CHAR(SUM(CASE WHEN SD.R3 = 5 THEN SD.A1 ELSE 0 END)),5,2))
AS ACT5
FROM (
SELECT EMPLID,EFFDT,ACTION_REASON,
SUBSTR(ACTION_REASON,1,1),
SUBSTR(ACTION_REASON,2,1),
SUBSTR(ACTION_REASON,3,1),
TO_NUMBER(ASCII(SUBSTR(ACTION_REASON,1,1)) ||
ASCII(SUBSTR(ACTION_REASON,2,1)) ||
ASCII(SUBSTR(ACTION_REASON,3,1))) AS A1,
ROW_NUMBER() over(PARTITION BY EMPLID,EFFDT ORDER BY EFFDT desc,EFFSEQ desC) R3
FROM PS_JOB
WHERE action in ('ABC','XYZ')
and action_reason in ('123','456','789')
and emplid IN('12345','ABCDE')
AND effdt between '01-jan-2008' and '18-dec-2008'
ORDER BY EFFDT DESC, EFFSEQ DESC
) SD
GROUP BY EMPLID , EFFDT
) JOBXX
なぜ1つの行が必要ですか? 4つのアクション理由行しかない人のために行に何をしたいですか? 3、あなたは、@ Quasssnoiのソリューションで提供されているように、従業員1人あたり0〜5行のテーブルを持つ方がよいでしょうか? –
0行と5行は従業員の最新の5行をフェッチしますが、アクション理由は同じである可能性があります。私は5つの最新のアクション理由を取りたいです。 2-3行しか変更されていない場合、残りの2行は空白になります。これは報告目的のためのものです。 –