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