当前位置: 代码迷 >> Oracle技术 >> 按照字段中以逗号隔开进行分组,应该怎么写sql
  详细解决方案

按照字段中以逗号隔开进行分组,应该怎么写sql

热度:262   发布时间:2016-04-24 08:06:33.0
按照字段中以逗号隔开进行分组,应该如何写sql

如图,本来是一个很简单的分组sql,现在需要按照第一列以逗号隔开的字段进行分组,
比如:分别按照  国内上市企业,境外上市企业等等分别进行分组,只要该列包含这个字段就纳入分组,应该如何写sql,真心求教。
------解决思路----------------------
with T AS (
select REGEXP_SUBSTR(A, '[^,]+', 1, LEVEL) A,B,C
from MV_DWTJ
CONNECT BY LEVEL <= REGEXP_COUNT(A, ',') + 1
and rowid= prior rowid
and prior dbms_random.value is not null
)
SELECT A,SUM(B),SUM(C)
FROM T GROUP BY A

另外注意你数据中的逗号是中文逗号还是英文逗号,正则表达式需要相应调整
------解决思路----------------------
按bw555 说的,“其他”和“其他单位特性”就区分不出来了,造成了笛卡尔积
你可以考虑在这个sql的基础上修改下

select
    b.code,
    max(b.zh_cn_caption),
    sum(a.before_income)
from
    mv_dwtj a,
    const_dictionary b
where
    instr( ','
------解决思路----------------------
a.g_chk_characteristic_name
------解决思路----------------------
',',','
------解决思路----------------------
b.zh_cn_caption
------解决思路----------------------
',') > 0
group by
    b.code
/*order by 
    b.code */

  相关解决方案