You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL生成数组datas后无法复用,如何修改语句解决报错?

问题解决方法

你遇到的错误是因为第一个独立SELECT生成的datas仅属于该查询的结果列,无法被后续的CTE(q)引用——两者是独立的查询语句,作用域不共享。

以下是两种可行的修改方案:

方案一:将数组生成逻辑整合到CTE中,共享作用域

WITH datas_cte AS (
    SELECT ARRAY(SELECT DISTINCT request_at FROM trip) AS datas
), q AS (
    SELECT SUM(CASE WHEN request_at = (SELECT datas[1] FROM datas_cte) THEN 1 ELSE 0 END) AS total
    FROM trip
)
SELECT * FROM q;

通过datas_cte先生成包含目标数组的数据集,后续的q可以通过子查询从datas_cte中获取数组元素,确保作用域连通。

方案二:直接获取目标值(更高效,若仅需数组第一个元素)

如果你的后续查询只需要数组的第一个元素来统计,没必要生成整个数组,直接提取第一个去重后的request_at即可:

WITH q AS (
    SELECT SUM(CASE WHEN request_at = (SELECT DISTINCT request_at FROM trip LIMIT 1) THEN 1 ELSE 0 END) AS total
    FROM trip
)
SELECT * FROM q;

内容的提问来源于stack exchange,提问作者dodle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:17:07