Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL错误:ORA-00979:不是GROUP BY表达式_Sql_Oracle_Oracle11g - Fatal编程技术网

SQL错误:ORA-00979:不是GROUP BY表达式

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

显示总订购数量大于或等于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 */

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.