[英]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.