Мне нужно создать JSON с двумя наборами объектов json в одном массиве. Эти объекты содержат агрегированные данные из нескольких таблиц. Когда я использую json_arrayagg, я получаю эту ошибку:
ORA-02000: отсутствует) ключевое слово
Код должен помочь объяснить больше того, что я сделал и что мне нужно.
SELECT JSON_OBJECT(
'rData' VALUE JSON_ARRAYAGG(
JSON_OBJECT(
'datapoints' VALUE JSON_ARRAY(JSON_OBJECT('key' VALUE 'ENM008137Q00190',
'value' VALUE tab3.column_6)),
'datatype' VALUE 'DATA_TYPE',
'id' VALUE tab1.column_4,
'key' VALUE tab3.column_1,
'timestamp' VALUE tab1.column_7),
JSON_OBJECT(
'id' VALUE tab1.column_4,
'key' VALUE tab3.column_1,
'timestamp' VALUE tab1.column_7,
'datatype' VALUE 'DATA_TYPE_2',
'datapoints' VALUE JSON_ARRAYAGG(JSON_OBJECT(
'key' VALUE tab5.column_8,
'value' VALUE tab2.column_9))))RETURNING CLOB)
FROM table_3 tab3,
table_4 tab4,
table_2 tab2,
table_1 tab1,
table_5 tab5
WHERE tab1.column_1 = tab2.column_1
AND tab3.column_2 = tab4.column_2
AND tab3.column_1 = tab2.column_1
AND tab1.column_1 = tab3.column_1
AND tab2.column_3 = tab5.column_3
AND tab2.latenttypeid = 1
AND tab3.column_2 = 2952326910
AND tab2.column_10 = 8878887
AND tab3.column_10 = 8878887
AND tab1.date BETWEEN '19-jun-19'
AND '25-jun-19'
GROUP BY tab1.column_4, tab3.column_1, tab3.column_6, tab1.column_7;
А вот вывод json, который мне нужен:
{
"rData": [{
"datapoints": [
{"key" : "ENM008137Q00190","value" : "10"}
],
"datatype": "DATA_TYPE",
"id": "H2hnJikUKAhGVzslBVBHqg86DnwGhh8V",
"key": "534421188",
"timestamp": "2019-07-05T05:33:12.000Z"
},
{
"key":"534421188",
"id":"H2hnJikUKAhGVzslBVBHqg86DnwGhh8V" ,
"timestamp": "2019-07-05T05:33:12.000Z",
"datatype": "DATA_TYPE_2",
"datapoints": [
{"key" : "ENM008137L0001","value" : "56.0869029"},
{"key" : "ENM008137L0002","value" : "59.79244788"},
{"key" : "ENM008137L0003","value" : "73.34481183"},
{"key" : "ENM008137L0004","value" : "43.94661396"},
{"key" : "ENM008137L0005","value" : "80.71909567"},
{"key" : "ENM008137L0006","value" : "97.2707082"}
]
},{
"datapoints": [
{"key" : "ENM008137Q00190","value" : "9"}
],
"datatype": "DATA_TYPE",
"id": "A1JnnNjUKAhGVzslBVBHqg86Dnw52Ccj",
"key": "534421164",
"timestamp": "2019-07-05T04:27:45.000Z"
},
{
"key":"534421164",
"id":"A1JnnNjUKAhGVzslBVBHqg86Dnw52Ccj" ,
"timestamp": "2019-07-05T04:27:45.000Z",
"datatype": "DATA_TYPE_2",
"datapoints": [
{"key" : "ENM008137L0001","value" : "88.0869029"},
{"key" : "ENM008137L0002","value" : "88.79244788"},
{"key" : "ENM008137L0003","value" : "88.34481183"},
{"key" : "ENM008137L0004","value" : "82.94661396"},
{"key" : "ENM008137L0005","value" : "99.71909567"},
{"key" : "ENM008137L0006","value" : "88.2707082"}
]
}]
}
В массиве "rData" есть 2 json_objects, это два источника данных, которые я хотел объединить, но я не уверен, возможно ли это с текущими функциями.
Я прошу прощения за код, я пытался дать вам как можно меньше информации, чтобы помочь с этим. И, конечно, любая помощь всегда ценится.