使用 MSSQL 的 GROUP BY 子句进行条件求和
Microsoft SQL Server (MSSQL) 使用 GROUP BY
子句提供灵活的数据聚合。 要在 GROUP BY
查询中执行条件求和,请利用 CASE
语句根据特定条件有选择地在总和中包含值。
考虑一个具有以下结构的 OrderDetails
表:
<code>---------------------------------------------------------------- | OrderId | CopyCost | FullPrice | Price | PriceType | ---------------------------------------------------------------- | 16 | 50 | 100 | 50 | CopyCost | ---------------------------------------------------------------- | 16 | 50 | 100 | 100 | FullPrice | ---------------------------------------------------------------- | 16 | 50 | 100 | 50 | CopyCost | ---------------------------------------------------------------- | 16 | 50 | 100 | 50 | CopyCost | ----------------------------------------------------------------</code>
要计算每个 ItemCount
的 TotalCopyCost
、TotalFullPrice
和 OrderId
,请使用以下查询:
<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>
CASE
函数中的 SUM()
语句有条件地对 Price
值求和。 如果 PriceType
是 'CopyCost',则包含 Price
;否则加0。这样可以对每个 OrderId
的“CopyCost”和“FullPrice”进行单独总计。
输出将是:
<code>---------------------------------------------------------------- | OrderId | ItemCount | TotalCopyCost | TotalFullPrice | ---------------------------------------------------------------- | 16 | 4 | 150 | 100 | ----------------------------------------------------------------</code>
这演示了 CASE
语句如何在 GROUP BY
查询中启用强大的条件聚合,为 MSSQL 中的数据汇总和分析提供灵活的方法。
以上是如何在MSSQL Group By查询中执行条件求和?的详细内容。更多信息请关注PHP中文网其他相关文章!