1.问题
SELECT p.PDTNO, p.PDTNAME, sum(a.QUANTITY) AS applySumCount
FROM PRODUCT p
JOIN APPLY a ON p.PDTNO = a.PDTNO
GROUP BY PDTNO
ORDER BY applySumCount DESC;
在Mysql中我们经常将select中聚合函数得到的结果起别名用于order by
但是同样的方式在Oracle中就不行,会报错:ORA-00918: 未明确定义列
2.解决
参考: 聚合函数是否可以写在order by后面,为什么?
在Group by/Order by/Where/ON子句中不能使用....
MySQL和Oracle在处理聚合函数在ORDER BY子句中的行为上存在一些差异。
在MySQL中,允许在ORDER BY子句中直接引用聚合函数的结果。这意味着你可以像你的查询那样直接使用applySumCount来排序结果。
而在Oracle中,ORDER BY子句不能直接引用聚合函数的结果。需要在这些子句中使用聚合函教的结果,可以使用子查询来解决
SELECT subquery.PDTNO, subquery.PDTNAME, subquery.applySumCount
FROM (
SELECT p.PDTNO, p.PDTNAME, SUM(a.QUANTITY) AS applySumCount
FROM PRODUCT p
JOIN APPLY a ON p.PDTNO = a.PDTNO
GROUP BY p.PDTNO, p.PDTNAME
) subquery
ORDER BY subquery.applySumCount DESC;
标签:聚合,PDTNO,Mysql,子句,ORDER,applySumCount,Oracle,order
From: https://www.cnblogs.com/trmbh12/p/18057090