首页 > 解决方案 > 根据第 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

标签: sql-server

解决方案


在下面尝试以获得所需的结果 -

带有数据的示例表

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

推荐阅读