使用内部联接的SQL多表查询问题

使用内部联接的SQL多表查询问题,sql,oracle,join,group-by,sum,Sql,Oracle,Join,Group By,Sum,我试图使用内部连接解决这个问题,但我不断出错 列出总额超过500美元的每个订单的客户号、订单号、订单日期和订单总额。将列名称ORDER_TOTAL指定给显示订单总计的列。按订单号对结果进行排序 订单表包含客户编号、订单编号和订单日期 订单行包含订单数量、项目数量、订购数量和质量价格 这是我的解决方案: SELECT CUSTOMER_NUM, ORDERS.ORDER_NUM, ORDER_DATE, SUM(QUOTED_PRICE) AS ORDER_TOTAL FROM ORDE

我试图使用内部连接解决这个问题,但我不断出错

列出总额超过500美元的每个订单的客户号、订单号、订单日期和订单总额。将列名称ORDER_TOTAL指定给显示订单总计的列。按订单号对结果进行排序

订单表包含客户编号、订单编号和订单日期

订单行包含订单数量、项目数量、订购数量和质量价格

这是我的解决方案:

SELECT CUSTOMER_NUM, ORDERS.ORDER_NUM, ORDER_DATE, SUM(QUOTED_PRICE) AS ORDER_TOTAL     
FROM ORDERS     
INNER JOIN ORDER_LINE ON ORDERS.ORDER_NUM = ORDER_LINE.ORDER_NUM    
GROUP BY ORDER_NUM     
HAVING ORDER_TOTAL > 500;
我收到的错误:

Error starting at line : 61 in command -    
SELECT CUSTOMER_NUM, ORDERS.ORDER_NUM, ORDER_DATE, SUM(QUOTED_PRICE) AS ORDER_TOTAL     
FROM ORDERS     
INNER JOIN ORDER_LINE ON ORDERS.ORDER_NUM = ORDER_LINE.ORDER_NUM    
GROUP BY ORDER_NUM     
HAVING ORDER_TOTAL > 500

Error at Command Line : 65 Column : 8
Error report -

SQL Error: ORA-00904: "ORDER_TOTAL": invalid identifier    
00904. 00000 -  "%s: invalid identifier"

有什么建议吗?

Oracle不允许重用
GROUP BY
子句中的
SELECT
子句中定义的别名。你需要重复这个表达式。此外,所有非聚合列必须显示在
GROUP BY
子句中

因此:

请注意,我修改了您的查询以使用表别名,并使用它所属的表作为每个列的前缀;这些都是很好的实践,使查询更易于读写,并避免了关于每列所属表的歧义

SELECT o.CUSTOMER_NUM, o.ORDER_NUM, o.ORDER_DATE, SUM(ol.QUOTED_PRICE) AS ORDER_TOTAL
FROM ORDERS o
INNER JOIN ORDER_LINE ol ON ol.ORDER_NUM = o.ORDER_NUM
GROUP BY o.CUSTOMER_NUM, o.ORDER_NUM, o.ORDER_DATE
HAVING SUM(ol.QUOTED_PRICE) > 500;