SQL错误:ORA-00979:不是GROUP BY表达式
显示总订购数量大于或等于100的订购项目的项目代码、供应商名称和总数量SQL错误:ORA-00979:不是GROUP BY表达式,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,显示总订购数量大于或等于100的订购项目的项目代码、供应商名称和总数量 SELECT QUOT.sname, ORD.Qtyordered,SUM(ORD.QTYORDERED) from Quotation QUOT inner join Orders ORD ON QUOT.QuotationId = ORD.QuotationId GROUP BY QUOT.sname HAVING SUM(ORD.QTYORDERED) >=100 /* No Error */ SEL
SELECT QUOT.sname, ORD.Qtyordered,SUM(ORD.QTYORDERED)
from Quotation QUOT
inner join Orders ORD ON QUOT.QuotationId = ORD.QuotationId
GROUP BY QUOT.sname
HAVING SUM(ORD.QTYORDERED) >=100 /* No Error */
SELECT QUOT.Itemcode, QUOT.sname, ORD.Qtyordered, SUM(ORD.QTYORDERED)
from Quotation QUOT
inner join Orders ORD ON QUOT.QuotationId = ORD.QuotationId
GROUP BY QUOT.sname
HAVING SUM(ORD.QTYORDERED) >=100 /* ERROR not a group by expression */
我是SQL初学者,谁能帮我写一个查询。不要选择
ORD.Qtyordered
或ITEM\u code
作为单独的列。它们不适用于通过sname
进行的聚合查询:
SELECT QUOT.sname, SUM(ORD.QTYORDERED)
from Quotation QUOT inner join
Orders ORD
ON QUOT.QuotationId = ORD.QuotationId
GROUP BY QUOT.sname
HAVING SUM(ORD.QTYORDERED) >= 100 ;
如果需要这些项目,您可能需要listag()
或者,对于所问的问题,将项目包括在分组中,由:
SELECT QUOT.Itemcode, QUOT.sname, SUM(ORD.QTYORDERED)
from Quotation QUOT inner join
Orders ORD
ON QUOT.QuotationId = ORD.QuotationId
GROUP BY QUOT.Itemcode, QUOT.sname
HAVING SUM(ORD.QTYORDERED) >= 100 ;
100
的限制是订单中的每项而非每项。不要选择ORD.Qtyordered
或item\u code
作为单独的列。它们不适用于通过sname
进行的聚合查询:
SELECT QUOT.sname, SUM(ORD.QTYORDERED)
from Quotation QUOT inner join
Orders ORD
ON QUOT.QuotationId = ORD.QuotationId
GROUP BY QUOT.sname
HAVING SUM(ORD.QTYORDERED) >= 100 ;
如果需要这些项目,您可能需要listag()
或者,对于所问的问题,将项目包括在分组中,由:
SELECT QUOT.Itemcode, QUOT.sname, SUM(ORD.QTYORDERED)
from Quotation QUOT inner join
Orders ORD
ON QUOT.QuotationId = ORD.QuotationId
GROUP BY QUOT.Itemcode, QUOT.sname
HAVING SUM(ORD.QTYORDERED) >= 100 ;
100
的限制是订单中的每项而不是每项。看起来您只需要调整查询的分组依据,以满足您拥有的其他列:
SELECT QUOT.Itemcode,
QUOT.sname,
SUM(ORD.QTYORDERED)
FROM Quotation QUOT
INNER JOIN Orders ORD ON QUOT.QuotationId = ORD.QuotationId
GROUP BY QUOT.Itemcode, QUOT.sname
HAVING SUM(ORD.QTYORDERED) >=100
使用分组依据
执行聚合操作时,每个未聚合的列都应包含在分组依据
语句中。看起来您只需要调整查询的分组依据
,以适应您拥有的其他列:
SELECT QUOT.Itemcode,
QUOT.sname,
SUM(ORD.QTYORDERED)
FROM Quotation QUOT
INNER JOIN Orders ORD ON QUOT.QuotationId = ORD.QuotationId
GROUP BY QUOT.Itemcode, QUOT.sname
HAVING SUM(ORD.QTYORDERED) >=100
当使用分组依据
执行聚合操作时,每个非聚合列都应包含在分组依据
语句中。add QUOT.Itemcode在您的分组依据请提供完整答案的示例数据和预期输出,毫无疑问,我可以告诉您,在GROUP BY子句中,您必须拥有所有未在SELECT
子句中聚合的列(并且在SELECT
中),并且这些列不是HAVING子句的一部分(并且在SELECT
中),您通常按分组
与SELECT
相同的列,除了那些设置函数的参数。add QUOT.Itemcode在您的group BY中请提供完整答案的示例数据和预期输出,即时我可以告诉您,在group BY子句中,您必须拥有所有未在SELECT
子句中聚合的列(并且位于SELECT
)这不是HAVING子句的一部分(并且在SELECT
中),您通常按SELECT
相同的列分组,除了那些是设置函数的参数的列。为什么您总是打败我?我需要打字快一点+你为什么总是打我?我需要打字快一点+1.