我有一个多表SQL查询(如下),该查询可用于获取所需的答案,但是我需要将同一查询编码为匿名PL / SQL块。我尝试了多种方法,但是没有得到类似的有效输出。谁能告诉我您将如何处理(或仅提供一些有关如何最好地进行操作的指示)?谢谢!
SELECT * FROM
(SELECT zip, count(purchase) as total_sales_in_zip
FROM sales s
JOIN items i
ON s.sale_id = i.sale_id
JOIN customers c
ON s.cust_id = c.cust_id
GROUP BY zip
ORDER BY total_sales_in_zip DESC)
WHERE ROWNUM <= 1;
输出结果是:
ZIP TOTAL_SALES_IN_ZIP
----- -------------------
48864 38
答案 0 :(得分:2)
尽管您的查询看起来毫无意义。它是一个简单的联接查询,没有任何限制,并且可以使用额外的复杂过滤器。如果仅在presql上添加BEGIN
,在postsql上添加END
,则它将是有效的匿名Pl / sql块。
DECLARE
v_zip Sales.zip%TYPE :=&v_zip;
v_total_sales_in_zip varchar2(200);
BEGIN
SELECT v_zip, count(purchase)
as
total_sales_in_zip into
v_total_sales_in_zip
FROM sales s
JOIN items i
ON s.sale_id = i.sale_id
JOIN customers c
ON s.cust_id = c.cust_id
GROUP BY v_zip
ORDER BY total_sales_in_zip DESC)
WHERE ROWNUM <= 1;
dbms_output.putline("ZIP CODE"|| v_zip ||"Total Sales in Zip : "|| v_total_sales_in_zip);
END;