HAVING 子句中的 Oracle PL/SQL 变量

标签 oracle plsql

我在将变量放入 HAVING 子句时遇到一些麻烦,问题是我需要 COUNT(*) 大于该变量。

我正在使用 ORACLE 数据库 XE 11.2

DECLARE


  cnt1 NUMBER;
  cnt2 NUMBER;
  res NUMBER;
BEGIN
  SELECT COUNT(*)
    INTO cnt1
    FROM BESTELLING;

  SELECT COUNT(*)
    INTO cnt2
    FROM ARTIKEL;

  res := cnt1 / cnt2;
END;
/

SELECT A.Naam, COUNT(*) AS HOEVEEL_VERKOCHT
FROM Artikel A, Winkelwagen W
WHERE A.Artikel_ID = W.Artikel_ID
AND W.Datum_Besteld IS NOT NULL
GROUP BY A.Naam
HAVING COUNT(*) > ?res?
ORDER BY COUNT(*) DESC;

最佳答案

将来自 PL/SQL 的查询直接放置在主查询中,作为子查询:

.......
HAVING COUNT(*) > 
   (  SELECT COUNT(*) FROM BESTELLING )   /
   (  SELECT COUNT(*) FROM ARTIKEL )
ORDER BY COUNT(*) DESC;

关于HAVING 子句中的 Oracle PL/SQL 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33023453/

相关文章:

database - 将迭代的提取替换为 BULK COLLECT

mysql - 将行从一个表复制到另一个表,不包括 2087 年和 2089 年出生的客户

java - Spring JDBC在运行SQL脚本时无法处理DECLARE语句

java - 如何从 spring boot 应用程序调用 oracle 函数?

oracle - 缓冲区高速缓存中的临时 CLOB 有何用途?

javascript - 如何设置级联select2值onClick

java - 如何检查我是否从java插入数据库

oracle - 立即执行中的批量收集限制

plsql - PL/SQL错误无法识别错误,PSL-00103

sql - Oracle 性能 IN 或 OR