sql-server - 根据第 3 列的值计算两个不同的 SUM
问题描述
假设我们有一个“销售”表,如下所示。表包含数量、价格以及是否应纳税。我想计算应税总额和非应税总额。
ID Qty Price Taxable
-- --- ----- -------
1 1 5.0 1
2 2 10.0 1
3 2 10.0 1
4 4 5.0 1
5 5 15.0 1
6 5 5.0 1
7 4 20.0 0
8 3 10.0 0
9 3 10.0 0
根据应税列的值为 1 或 0 ,在两个不同列中生成(数量 * 价格)总计的最简单和最快的方法是什么
TotalNoTax TotalTax
---------- --------
140.00 165.0
解决方案
在下面尝试以获得所需的结果 -
带有数据的示例表
Declare @data table
(ID int, Qty int, Price decimal(5,2), Taxable int)
insert into @data
(id, qty, price, taxable)
values
( 1, 1 , 5.0 , 1),
( 2, 2 , 10.0 , 1),
( 3, 2 , 10.0 , 1),
( 4, 4 , 5.0 , 1),
( 5, 5 , 15.0 , 1),
( 6, 5 , 5.0 , 1),
( 7, 4 , 20.0 , 0),
( 8, 3 , 10.0 , 0),
( 9, 3 , 10.0 , 0)
询问
Select
Sum(Case Taxable when 0 then (Qty * Price) else 0 end ) TotalNoTax,
Sum(Case Taxable when 1 then (Qty * Price) else 0 end ) TotalTax
From @data