gpt4 book ai didi

sql - 在带有 ORDER BY 的子选择中使用 JSON_ARRAYAGG 会出错

转载 作者:行者123 更新时间:2023-12-03 20:05:25 24 4
gpt4 key购买 nike

使用 Oracle 19c:
我有以下查询,其中子选择(通过 plans1_.ID 链接到主选择)使用 JSON_ARRAYAGG功能。

select
... , /* Other columns... */
(SELECT
json_arrayagg(json_object('sentDate' value mh.sent_date,
'sentByEmail' value mh.send_by_email,
'sentBy' value mh.sent_by,
'sentByName' value mh.sent_by_name,
'sentToEmail' value mh.sendee_email) RETURNING CLOB)
from mail_history_t mh
where mh.plan_id = plans1_.id and mh.is_current_status = 'Y'
/*---This is the problem block: If I remove this ORDER BY the query works---*/
order by mh.sent_date desc
) as col_33_0_,
/* ... */

from TABLE_T table0_
left outer join PLANS_T plans1_
on table0_.SOME_ID=plans1_.SOME_ID
where ... /* etc. */
当我有 order by作为我的 select from mail_history_t mh 的一部分,我得到错误
00907. 00000 -  "missing right parenthesis"
但是当我摆脱 order by子句,查询有效。此外,如果我要隔离它,则子选择会自行工作。
我的目标是获取具有满足条件的列但按 sent_date 排序的行的 JSON-Array 表示描述

最佳答案

JSON_ARRAYAGG() 接受自己的 ORDER BY条款:

json_arrayagg(json_object('sentDate' value mh.sent_date,
'sentByEmail' value mh.send_by_email,
'sentBy' value mh.sent_by,
'sentByName' value mh.sent_by_name,
'sentToEmail' value mh.sendee_email
) ORDER BY mh.sent_date desc RETURNING CLOB
)
ORDER BY不推荐在子查询中。

关于sql - 在带有 ORDER BY 的子选择中使用 JSON_ARRAYAGG 会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62942597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com