1
表:主键已经凸显AS子句中的Oracle 11g XE
- 客户(CUSTOMER_ID,f_name,l_name,tel_no,地址,网卡,市)
- 产品(PRODUCT_ID,名称,说明,价格,sales_tax)
- 分支(branch_id,名称,tel_no,地址,市)
- 订单(ORDER_ID,CUSTOMER_ID,order_date的,branch_id)
- order_product(的order_id,product_id,数量)
这是我的查询的一个非常简化的版本:
SELECT customer_id, SUM(quantity) AS avg_quantity
FROM orders,order_product
WHERE orders.order_id = order_product.order_id
GROUP BY customer_id
HAVING SUM(quantity) > (SELECT AVG(no_quantity)
FROM(
SELECT customer_id, SUM(quantity) AS no_quantity
FROM orders,order_product
WHERE orders.order_id = order_product.order_id
GROUP BY customer_id))
我有2子查询,我想在查询执行时临时存储结果集。 我已经看到,这样做SQL例如:
(SELECT * FROM orders WHERE branch_id = 4) AS tempone
我想存储的结果集,所以我可以用它在上面的查询子query.The的上层Oracle SQL Developer中不运行。
ERROR : ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
我不想使用临时表。我已经尝试过使用AS子句,查询需要很长时间才能执行,如超过20分钟。我不知道为什么
谢谢,简化表单更易于阅读。数量总和不是平均值,顶级查询显示customer_id的数量大于平均数量的客户数量,因此我将其命名为使其更容易。 **我现在需要的是oracle中的“AS”子句,所以我可以存储临时生成的结果集。如果您有任何关于此事的信息,我将非常感激。** – hasnain095
@ user1859596我提出的解决方案删除了子查询,因此不确定为什么您仍然朝着这个方向看。在Oracle中,存储结果集的方式是WITH子句(因子分解查询),但在这种情况下不需要,因为我们不会重复使用结果集。你可以,如果你打算重复多次查询的结果作为一个更大的SQL的一部分,使用'与res作为(我的查询上面)select..from res a,res b等...' – DazzaL