我有一个报告,显示客户订购的产品及其价格:
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)中编写此代码。
感谢大家的反馈/帮助,至少让我想到了不同的方法。我想出了一些与我使用的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