SQL 中的条件总和

Conditional Sum in SQL

我正在寻找一种方法来在以另一个字段为条件的 select 语句中添加创建求和。最好用一个例子来解释。

假设我们在 table

中有以下值
EmployeeID     SalesQty      Verified
0025           34            Y
0040           56            Y
0040           17            N
0040           44            Y

然后我想return以下,其中总销售额是EmployeeId分组的所有salesqty值的总和,只有那些记录被验证的验证销售额是Y。

EmployeeID      TotalSales      VerfifiedSales
0025            34              34
0040            117             100

试试这个:

SELECT 
    EmployeeID, 
    SUM(SalesQty) AS TotalSales, 
    SUM(CASE WHEN Verified = 'Y' THEN SalesQty ELSE 0 END) AS VerfifiedSales
FROM
    Tbl
GROUP BY
    EmployeeID

使用另一个总和,条件已验证 = Y:

select EmployeeID,
       sum(SalesQty) as TotalSales,
       sum(case when verified = 'Y' then SalesQty else 0 end) as VerfifiedSales
from table
group by EmployeeID