С вашими данными вы можете flat извлечь оба биржевых символа в отдельных столбцах, названных в честь биржевого символа.
WITH json AS (
SELECT '{"date":"2019-02-14"
,"data":{"AAPL":{"open":"169.71","close":"170.80","high":"171.26","low":"169.38","volume":"21175371"}
,"MSFT":{"open":"106.31","close":"106.90","high":"107.29","low":"105.66","volume":"21621821"}}}' doc
FROM dual
)
SELECT jt1.*
FROM
json j,
json_table(j.doc, '$'
COLUMNS
CLOSE_DATE varchar2(200) PATH '$.date'
, NESTED PATH '$.data' COLUMNS (
NESTED PATH '$.AAPL' COLUMNS
(
AAPL_opn VARCHAR2(2000) PATH '$.open',
AAPL_clse VARCHAR2(2000) PATH '$.close',
AAPL_hgh VARCHAR2(2000) PATH '$.high',
AAPL_lows VARCHAR2(2000) PATH '$.low',
AAPL_volu VARCHAR2(2000) PATH '$.volume'
) ,
NESTED PATH '$.MSFT' COLUMNS
(
MSFT_opn VARCHAR2(2000) PATH '$.open',
MSFT_clse VARCHAR2(2000) PATH '$.close',
MSFT_hgh VARCHAR2(2000) PATH '$.high',
MSFT_lows VARCHAR2(2000) PATH '$.low',
MSFT_volu VARCHAR2(2000) PATH '$.volume'
)
)
) jt1;
Но это не будет масштабироваться для большего количестваданные.Вы, вероятно, хотите, чтобы массив содержал фондовый символ в нем.
Обратите внимание на измененные данные JSON
WITH json AS (
SELECT '{"date":"2019-02-14"
,"data":[{"ticker":"AAPL","open":"169.71","close":"170.80","high":"171.26","low":"169.38","volume":"21175371"}
, {"ticker":"MSFT","open":"106.31","close":"106.90","high":"107.29","low":"105.66","volume":"21621821"}]}' doc
FROM dual
)
SELECT jt1.*
FROM
json j,
json_table(j.doc, '$'
COLUMNS (
CLOSE_DATE varchar2(200) PATH '$.date'
, NESTED PATH '$.data[*]' COLUMNS
( ticker VARCHAR2(2000) PATH '$.ticker',
opn VARCHAR2(2000) PATH '$.open',
clse VARCHAR2(2000) PATH '$.close',
hgh VARCHAR2(2000) PATH '$.high',
lows VARCHAR2(2000) PATH '$.low',
volu VARCHAR2(2000) PATH '$.volume'
)
)
) jt1;
результат
CLOSE_DATE TICKER OPN CLSE HGH LOWS VOLU
-------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------
2019-02-14 AAPL 169.71 170.80 171.26 169.38 21175371
2019-02-14 MSFT 106.31 106.90 107.29 105.66 21621821