簡體   English   中英

Oracle:如何總結 Oracle 中的別名列

[英]Oracle: How to sum up alias column in Oracle

我有一個疑問:

SELECT od.*, i.name AS item_name, (od.quantity*od.price) AS sub_total
    FROM order_details od
    JOIN items i ON od.item_id = i.item_id
    WHERE order_id = 9

它產生以下結果。 在此處輸入圖片說明

現在,我想總結SUB_TOTAL列,我希望結果為1300

我已經嘗試了以下代碼,但它不起作用。

SELECT od.*, i.name AS item_name, (od.quantity*od.price) AS sub_total, SUM(sub_total) AS total
    FROM order_details od
    JOIN items i ON od.item_id = i.item_id
    WHERE order_id = 9

請幫忙。

這是一個窗口SUM() - 你不能重用列別名,你需要重復表達式,或者使用子查詢或 CTE:

SELECT od.*, i.name AS item_name, (od.quantity * od.price) AS sub_total,
    SUM(od.quantity * od.price) OVER() AS total
FROM order_details od
JOIN items i ON od.item_id = i.item_id
WHERE order_id = 9

您可能需要根據您的實際需求調整窗口SUM()OVER()子句。 上面的查詢將在兩行上帶來1300 您可以使用PARTITION BY子句將行集划分為組,和/或使用ORDER BY計算運行總和。

使用窗口函數:

SELECT od.*, i.name AS item_name, (od.quantity*od.price) AS sub_total,
       SUM((od.quantity*od.price) OVER (ORDER BY order_detail_id)
FROM order_details od JOIn
     items i
     ON od.item_id = i.item_id
WHERE order_id = 9;

請注意,您不能重復使用別名; 您需要重復計算。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM