这个问题已经有答案了:
pivot/unpivot oracle sql query with more than 2 resulting columns(1个答案)
5天前关闭。
| 保单编号|代理编号1| AGNT_PCT_RT_1|代理编号2| AGNT_PCT_RT_2|
| --|--|--|--|--|
| 粤ICP备15045678号-1| CL00022250| 50 |CL00050083| 25 |
我们有上表所示的示例数据,基于此,我们需要将数据相应地拆分到单独的行中,如果两个或三个代理附加到策略,则每个代理都有自己的记录和百分比,如下所示。
SC123456789 ---> CL00022250 ----> 50
SC123456789 ---> CL00050083 ----> 25
使用SQL查询:
SELECT
TRIM(UPPER(M.SC_CNT_PREF) )|| TRIM(UPPER(M.SC_CNT_NO) )|| TRIM(UPPER(M.SC_CNT_SUF) ) AS POLICY_NUMBER,
CASE
WHEN C.SP_AGTNMBR1 != '00000' THEN 'CL000'|| C.SP_AGTNMBR1
END
AS AGENT_NUMBER_1,
TO_NUMBER(C.SP_AGTPCNT1) AS AGNT_PCT_RT_1,
CASE
WHEN C.SP_AGTNMBR2 != '00000' THEN 'CL000'|| C.SP_AGTNMBR2
END
AS AGENT_NUMBER_2,
TO_NUMBER(C.SP_AGTPCNT2) AS AGNT_PCT_RT_2,
CASE
WHEN C.SP_AGTNMBR3 != '00000' THEN 'CL000'|| C.SP_AGTNMBR3
END
AS AGENT_NUMBER_3,
TO_NUMBER(C.SP_AGTPCNT3) AS AGNT_PCT_RT_3
FROM
EODS_STG.STG1_EODS_SCIS_MASTER M
LEFT OUTER JOIN EODS_STG.STG1_EODS_SCIS_SPIA_CONTRACT C ON (
M.SC_CNT_PREF = C.SP_CNTRPREF
AND
M.SC_CNT_NO = C.SP_CNTRNMBR
AND
M.SC_CNT_SUF = C.SP_CNTRSUFF
)
2条答案
按热度按时间6psbrbz91#
将查询 Package 在子查询中,并使用
UNPIVOT
和多个值:fiddle
4nkexdtk2#
根据您发布的数据和解释,
union
可能是这个问题的简单解决方案。样本数据:
查询方式: