问题描述
我在 oracle 上有这个查询。
lamejs
当我运行这个 sql 查询时,它给了我一个错误:无效标识符计数。
仅当计数大于给定参数时,我们如何获得结果?
谢谢。
解决方法
与 MySQL 不同,在 Oracle 中我们不能在 HAVING
子句中引用别名(别名只能在 ORDER BY
子句中引用)。一种解决方法是将您当前的逻辑放入 CTE,然后对其进行过滤。
WITH cte AS (
SELECT CBG.refs,CBG.cuo,CBG.date AS cbg_date,CBG.nber,CG.date AS cg_date,CBG.conso,(SELECT COUNT(*)
FROM MAD.VIN CBV
WHERE CBV.CUO = CBG.CUO AND
CBV.NBER = CBG.NBER AND
CBV.DATE = CBG.DATE AND
CBV.REFS = CBG.REFS
GROUP BY CUO,DATE,NBER,REFS) AS COUNTS,CBG.CONSO_CONCESS AS CONCESS
FROM MAD.GEN CBG
INNER JOIN MAD.CAR_GEN CG
ON CBG.cuo = CG.cuo AND
CBG.date = CG.date AND
CBG.nber = CG.nber
WHERE CBG.CONSO_DATE IS NOT NULL
)
SELECT refs,cuo,cbg_date,nber,cg_date,conso,COUNTS,CONCESS
FROM cte
WHERE COUNTS > 0;