我有许多表格,详细说明了商店的客户和销售情况等。
我想找到最低销售价格;即 SQL 表达式返回的单个结果。
为了使结果有意义,我还想将 customer_sale 表与 customer 表连接起来(这样有问题的客户也将返回他/她的姓名)。
使用以下代码
SELECT CUST_ORDER.CUST_ID, CUSTOMER.FNAME, CUSTOMER.LNAME, MIN(SALE_PRICE)
FROM CUST_ORDER
INNER JOIN CUSTOMER
ON CUST_ORDER.CUST_ID = CUSTOMER.CUST_ID
GROUP BY CUST_ORDER.CUST_ID
HAVING MIN(SALE_PRICE) = (SELECT MIN(SALE_PRICE) FROM CUST_ORDER GROUP BY CUST_ID)
在 Oracle 11g 中抛出以下错误:
第 1 行出现错误:ORA-00979:不是 GROUP BY 表达式
这是有道理的,因为它只返回一个结果。
但是删除 GROUP BY 子句会导致 dbms 抛出以下错误:
SELECT CUST_ORDER.CUST_ID, CUSTOMER.FNAME, CUSTOMER.LNAME, MIN(SALE_PRICE)
FROM CUST_ORDER
INNER JOIN CUSTOMER
ON CUST_ORDER.CUST_ID=CUSTOMER.CUST_ID
HAVING MIN(SALE_PRICE) = (SELECT MIN(SALE_PRICE) FROM CUST_ORDER)
第 1 行出现错误:ORA-00937:不是单组组函数
为了让语句正确执行,我需要做一些额外的嵌套吗?