首页 > 数据库 > mysql教程 > 如何在 MSSQL 中通过查询计算分组内的条件总和?

如何在 MSSQL 中通过查询计算分组内的条件总和?

Mary-Kate Olsen
发布: 2025-01-08 07:36:41
原创
201 人浏览过

How to Calculate Conditional Sums within a Group By Query in MSSQL?

在 MSSQL 分组查询中进行条件求和

在 SQL Server 的 OrderDetails 表中,每个订单项都有一个唯一的 OrderId,以及相关的成本 (CopyCost、FullPrice) 和价格类型 (PriceType)。目标是创建一个包含三列的汇总表:OrderId、ItemCount、TotalCopyCost 和 TotalFullPrice,其中 ItemCount 是每个订单的项目数量,TotalCopyCost 是每个订单的 CopyCost 值之和,TotalFullPrice 是每个订单的 FullPrice 值之和。

为此,可以使用带有条件求和的分组查询:

<code class="language-sql">SELECT OrderId, 
       COUNT(*) AS ItemCount,
       SUM(CASE WHEN PriceType = 'CopyCost' THEN Price ELSE 0 END) AS TotalCopyCost,
       SUM(CASE WHEN PriceType = 'FullPrice' THEN Price ELSE 0 END) AS TotalFullPrice
  FROM OrderDetails
 GROUP BY OrderId</code>
登录后复制

在此查询中:

  • COUNT(*) 表达式计算 ItemCount。
  • 两个 SUM(CASE) 表达式根据 PriceType 列执行条件求和。如果 PriceType 为 CopyCost,则 CASE 表达式计算结果为 Price 本身;否则,计算结果为 0。然后,SUM 函数将每个订单的值相加。类似地,第二个 CASE 表达式处理 FullPrice 的求和。

通过使用条件求和,查询有效地计算每个订单的总成本和全价,并按 OrderId 对结果进行分组。生成的汇总表提供了原始数据的综合视图,使分析订单相关费用更容易。

以上是如何在 MSSQL 中通过查询计算分组内的条件总和?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板