我有一份报告,显示客户订购的产品及其价格:
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
Run Code Online (Sandbox Code Playgroud)
我想插入一行汇总每个公司的订单,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
这里有一些代码显示了我的查询的基本结构:
SELECT company
, product
, price
FROM companyMaster
ORDER BY company,
, product,
, price;
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?我在Transact-SQL(Microsoft SQL Server)中写这个.
感谢大家的反馈/帮助,它至少让我想到了不同的方法。我想出了一些不依赖于我使用的 SQL Server 版本的东西(我们的供应商经常更改版本,因此我必须尽可能地交叉兼容)。
这可能被认为是一种黑客攻击(好吧,它是一种黑客攻击),但它确实有效,并且完成了工作:
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;
Run Code Online (Sandbox Code Playgroud)
该解决方案基本上使用两个 select 语句的 UNION。第一个与原来的完全相同,第二个产生我需要的总和行。为了正确找到总和行,我对公司名称进行了字符串串联(附加“总计”一词),这样当我按公司名称的字母顺序排序时,总计行将显示在每个公司部分的底部。
最终报告如下所示(不完全是我想要的,但功能相当,只是看起来不太漂亮:
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
Run Code Online (Sandbox Code Playgroud)