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

Oracle Apex交互式报表能否在SQL查询中使用列值?

在Oracle Apex交互式报表中根据当前行列值关联统计的实现方法

完全可以实现,只需要将子查询修改为关联子查询,让子查询引用外层当前行的KSIAZKAID列值即可,同时还能优化掉子查询中不必要的表连接。

修改后的关联子查询写法

select 
    LIB_KSIAZKA.KSIAZKAID as "Id Książki",
    LIB_KSIAZKA.TYTUL as "Tytuł",
    LIB_KSIAZKA.IMIE as "Imię autora",
    LIB_KSIAZKA.NAZWISKO as "Nazwisko autora",
    LIB_KSIAZKA.GATUNEK as "Gatunek",
    LIB_KSIAZKA.OCENA as "Ocena",
    -- 关联子查询:引用外层当前行的KSIAZKAID,去掉多余的表连接
    (SELECT Count(e.egzemplarzid) 
     from lib_egzemplarz e
     WHERE e.status='DOSTĘPNA' 
       AND e.ksiazkaid = LIB_KSIAZKA.KSIAZKAID) as "Liczba dostępnych egzemplarzy"
from LIB_KSIAZKA;

另一种优化写法:LEFT JOIN + GROUP BY

如果数据量较大,推荐用左连接分组的方式,性能通常比逐行子查询更优:

select 
    k.KSIAZKAID as "Id Książki",
    k.TYTUL as "Tytuł",
    k.IMIE as "Imię autora",
    k.NAZWISKO as "Nazwisko autora",
    k.GATUNEK as "Gatunek",
    k.OCENA as "Ocena",
    COUNT(e.egzemplarzid) as "Liczba dostępnych egzemplarzy"
from LIB_KSIAZKA k
left join lib_egzemplarz e 
  on e.ksiazkaid = k.KSIAZKAID 
  and e.status='DOSTĘPNA'
group by 
    k.KSIAZKAID,
    k.TYTUL,
    k.IMIE,
    k.NAZWISKO,
    k.GATUNEK,
    k.OCENA;

关键说明

  • 关联子查询中,直接用外层表的列名LIB_KSIAZKA.KSIAZKAID替代页面参数:P3_ID,就能自动匹配当前行的图书ID进行统计。
  • 原查询中子查询里的INNER JOIN lib_ksiazka k是冗余的,因为外层已经查询了LIB_KSIAZKA,子查询只需要通过e.ksiazkaid关联外层列即可。
  • 左连接分组的方式会一次性完成所有统计,避免逐行执行子查询的开销,适合数据量较大的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:30:52