我在将变量放入 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/