小编典典

将行插入查询结果(总和)

sql

我有一个报告,显示客户订购的产品及其价格:

CompanyA    Product 7    14.99  
CompanyA    Product 3    45.95
CompanyA    Product 4    12.00
CompanyB    Product 3    45.95
CompanyC    Product 7    14.99
CompanyC    Product 3    45.95

我想插入一行来汇总每个公司的订单,如下所示:

CompanyA    Product 7    14.99  
CompanyA    Product 3    45.95
CompanyA    Product 4    12.00
               Total:    72.94
CompanyB    Product 3    45.95
               Total:    45.95
CompanyC    Product 7    14.99
CompanyC    Product 3    45.95
               Total:    60.94

这是一些代码,显示了我所拥有的查询的基本结构:

SELECT company
   , product
   , price
FROM companyMaster
ORDER BY company,
   , product,
   , price;

有谁知道如何做到这一点?我在Transact-SQL(Microsoft SQL Server)中编写此代码。


阅读 179

收藏
2021-03-23

共1个答案

小编典典

感谢大家的反馈/帮助,至少让我想到了不同的方法。我想出了一些与我使用的SQL
Server版本无关的东西(我们的供应商经常更改版本,因此我必须尽可能地兼容)。

这可能被认为是一种hack(好吧,这是一种hack),但是它可以工作,并且可以完成工作:

SELECT company
   , product
   , price
FROM companyMaster
ORDER BY company,
   , product,
   , price

UNION

SELECT company + 'Total'
   , ''
   , SUM(price)
FROM companyMaster
GROUP BY company

ORDER BY company;

该解决方案基本上使用两个select语句的UNION。第一个就像原始的一样,第二个产生我需要的求和线。为了正确定位总和行,我对公司名称进行了字符串连接(在单词“
Total”后面加上),以便当我按字母顺序对公司名称进行排序时,“总计”行将显示在每个公司部分的底部。

最终报告如下所示(并非完全符合我的要求,但功能等效,只是看起来不太漂亮:

CompanyA    Product 7    14.99  
CompanyA    Product 3    45.95
CompanyA    Product 4    12.00
CompanyA Total           72.94
CompanyB    Product 3    45.95
CompanyB Total           45.95
CompanyC    Product 7    14.99
CompanyC    Product 3    45.95
CompanyC Total           60.94
2021-03-23