问题背景:
在编写报表取数sql时,需要从非标信息表中取增信措施类别。但是持仓表与非标资产信息表关联后,一行为空,一行有数据,造成最终取数sql数据重复。
没有修改前的sql:
SELECT A.PF_ID ,B.CRE_ENH_MEA
FROM TC_HP_PB_DOM_INFO A --持仓表
LEFT JOIN TC_SE_PB_DOM_INFO B ON REGEXP_SUBSTR(A.SYMBOL_CODE, '[^ ]+', 1, 1) = B.C_ZCDM AND A.BIZ_DATE = FU_GET_CPYWDATE('1','${FENDDATE}') --非标资产基本信息表
GROUP BY A.PF_ID ,B.CRE_ENH_MEA
查询的结果:
PF_ID | CRE_ENH_MEA |
101000748 | |
101000748 | 1,2,9 |
经度娘查询,可以使用Oracle的wmsys.wm_concat()分组连接字段函数解决。
修改后的sql:
SELECT PF_ID,wmsys.wm_concat(CRE_ENH_MEA) CRE_ENH_MEA FROM (
SELECT DISTINCT A.PF_ID ,B.CRE_ENH_MEA
FROM TC_HP_PB_DOM_INFO