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

Oracle Apex 22.21:修改柱状图源查询实现按日统计订单数

Oracle Apex 22.21 柱状图按日期统计订单数问题解决

需求与已完成操作

需求:在Oracle Apex 22.21的柱状图中,通过日期选择器(P5_DATE_FROM、P5_DATE_TO)展示指定日期范围内每日的订单数量。

已完成操作:

  • 创建日期选择器项P5_DATE_FROM和P5_DATE_TO;
  • 将图表系列源类型改为SQL Query,原查询代码如下:
select ORDER_ID,
       ORDER_NUMBER,
       ORDER_DATE,
       STORE_ID,
       FULL_NAME,
       EMAIL,
       CITY,
       STATE,
       ZIP_CODE,
       CREDIT_CARD,
       ORDER_ITEMS,
       APEX$SYNC_STEP_STATIC_ID,
       APEX$ROW_SYNC_TIMESTAMP
  from ORDERS_LOCAL
 where ORDER_DATE between TO_DATE(:P5_DATE_FROM,'YYYY-MM-DD') and TO_DATE(:P5_DATE_TO,'YYYY-MM-DD')
  • 在Source中添加需提交的页面项P5_DATE_FROM、P5_DATE_TO。

遇到的问题

  • 配置Column Mapping时,将Value设为ORDER_DATE报错:Ajax call returned server error ORA-01403: no data found for CHART Count Orders by Date.
  • 选择其他字段则展示字段实际值而非订单数;
  • 修改查询为统计分组后出现语法错误,添加同步字段后又报GROUP BY错误。

解决方案

1. 修正SQL查询语句

柱状图需要的是日期维度和对应日期的订单统计数,因此查询必须按日期分组并做计数统计,同时移除无关的同步字段(这类字段不属于统计维度,会导致GROUP BY错误)。正确的查询语句如下:

-- 按日期截断到天,统计每日订单数量
select TRUNC(ORDER_DATE) as ORDER_DAY,
       COUNT(ORDER_ID) as ORDER_COUNT
  from ORDERS_LOCAL
 where ORDER_DATE between TO_DATE(:P5_DATE_FROM,'YYYY-MM-DD') and TO_DATE(:P5_DATE_TO,'YYYY-MM-DD')
 group by TRUNC(ORDER_DATE)
 order by ORDER_DAY

2. 配置图表Column Mapping

在柱状图的Column Mapping设置中:

  • Label选择ORDER_DAY(作为X轴的日期标签)
  • Value选择ORDER_COUNT(作为Y轴的订单数量值)

3. 常见问题排查

  • ORA-01403无数据报错:检查日期选择器的输出格式是否与查询中TO_DATE的格式(YYYY-MM-DD)一致;同时确认所选日期范围内存在订单数据。
  • GROUP BY错误:统计查询中,所有未使用聚合函数的字段必须出现在GROUP BY子句中,原查询中的同步字段不属于统计维度,需直接移除。
  • 展示字段实际值而非订单数:原查询仅返回原始订单数据,未做计数统计,图表无法自动计算数量,必须通过分组统计得到订单数字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:01:27