Sixcool 2022-01-30 00:52 采纳率: 0%
浏览 15

关于数据从集合中提取转置

源数据:
名称 | 组成明细
可乐22oz | {可乐杯22oz:1;可口可乐糖浆:100}

想要的结果
名称 | 可乐杯22oz | 可口可乐糖浆
可乐22oz | 1 | 100

  • 写回答

1条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-01-30 14:02
    关注

    你这个组成明显真长这样?确定不是这样?

     {"可乐杯22oz":"1","可口可乐糖浆":"100"}
    

    如果是json的话,可以直接用json相关的函数进行解析,如果是你题目里这种格式,就只能先转成json再读了。
    而且你这组成明细是不是只有这两种?如果明细是不确定的,那就不能一步到位了,因为一个查询sql必须有确定的列数,先假定只有这两种吧

    with t as (
    select name, replace(replace(replace(replace(memo,'{','{"'),'}','"}'),':','":"'),';','","') memo from TEST_JSON)
    select name ,
    cast(JSON_EXTRACT(memo,'$.可乐杯22oz') as DECIMAL) 可乐杯22oz,
    cast(JSON_EXTRACT(memo,'$.可口可乐糖浆') as DECIMAL) 可口可乐糖浆 
    from t
    

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 1月30日