每组相关行添加一列的总和
add total sum of one column every set of related rows
我想收到这样的 sql 输出:
ORDER # | LINE # | PRICE
---------------------------------
AAA | 1 | 20
AAA | 2 | 30
AAA | 3 | 10
TOTAL_PRICE = 60
BBB | 1 | 50
BBB | 2 | 20
TOTAL_PRICE = 70
GRAND_TOTAL = 130
这可能吗?
感谢您的帮助
按顺序汇总并添加总计。
select order
, sum(price) total
from table
group by order
union all
select 'grand total' order
, sum(price) total
from table
;
这提供了表格结构的原始数据。要生成特定格式的输出,您需要一个报告工具。如果您不期望太花哨的结果,一些 rdbms 有命令行客户端可以帮助您(例如 oracle 的 sqlplus)。
编辑(根据 OP 的评论):
包括原始订单行并按所需顺序显示行需要额外的机器:
select *
from (
select order seq
, order
, line
, price total
from table
union all
select order || '-0' seq
, 'TL('||order||')' order
, null line
, total
from (
select order
, sum(price) total
from table
group by order
)
union all
select 'ZZZZZZ-9' seq
, grand total' order
, null line
, sum(price) total
from table
)
order by seq
;
seq
列的实际组成取决于订单代码的实际格式(很少有问题,因为它们的格式通常以明确定义的方式受到约束)。
如前所述,对于更高级的输出,您最好使用合适的工具。
也请尝试:
SELECT Order, line, SUM(price) total_price
FROM table_name
GROUP BY order, line, price WITH ROLLUP;
希望对您有所帮助。
我想收到这样的 sql 输出:
ORDER # | LINE # | PRICE
---------------------------------
AAA | 1 | 20
AAA | 2 | 30
AAA | 3 | 10
TOTAL_PRICE = 60
BBB | 1 | 50
BBB | 2 | 20
TOTAL_PRICE = 70
GRAND_TOTAL = 130
这可能吗?
感谢您的帮助
按顺序汇总并添加总计。
select order
, sum(price) total
from table
group by order
union all
select 'grand total' order
, sum(price) total
from table
;
这提供了表格结构的原始数据。要生成特定格式的输出,您需要一个报告工具。如果您不期望太花哨的结果,一些 rdbms 有命令行客户端可以帮助您(例如 oracle 的 sqlplus)。
编辑(根据 OP 的评论):
包括原始订单行并按所需顺序显示行需要额外的机器:
select *
from (
select order seq
, order
, line
, price total
from table
union all
select order || '-0' seq
, 'TL('||order||')' order
, null line
, total
from (
select order
, sum(price) total
from table
group by order
)
union all
select 'ZZZZZZ-9' seq
, grand total' order
, null line
, sum(price) total
from table
)
order by seq
;
seq
列的实际组成取决于订单代码的实际格式(很少有问题,因为它们的格式通常以明确定义的方式受到约束)。
如前所述,对于更高级的输出,您最好使用合适的工具。
也请尝试:
SELECT Order, line, SUM(price) total_price
FROM table_name
GROUP BY order, line, price WITH ROLLUP;
希望对您有所帮助。