我有一个要求,我在数据库表POLICY中有“ NOTECODE”列,其中包含多个逗号分隔格式的注释代码 例如:CC,TD,HL
政策:
POLICYNO | NOTECODE
----------|----------
ABC001 | CC,TD,HL
----------|----------
ABC002 | CC,TD
还有一个CODEDESC表,其中包含以下说明
CODE | DESCRIPTION
------|----------
CC | Credit Card Payment
------|----------
TD | Yee
------|--------------
HL |Hospital Credit (Letter)
我想使用查询来获取数据,该查询给出了如下所述的POLICYNO,NOTECODE和DESCRIPTION:
POLICYNO | NOTECODE | DESCRIPTION
----------|---------- |----------
ABC001 | CC,TD,HL | Credit Card Payment, Yee, Hospital Credit (Letter)
----------|---------- |----------
ABC002 | CC,TD | Credit Card Payment, Yee
请有人帮我怎么做。
答案 0 :(得分:0)
您可以使用JOIN
和聚合:
select p.policyno, p.notecode,
listagg(description, ', ') within group (order by instr(p.notecode, cd.code))
from policy p left join
codedesc cd
on ',' || p.notecode || ',' like '%,' || cd.code || ',%'
group by p.policyno, p.notecode;
请注意,这效率不高!这是一种变通方法,因为您陷入了一个非常糟糕的数据模型中。您的努力实际上应该是修复数据模型。