首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有多个条件的sql获取sum

使用带有多个条件的sql获取sum
EN

Stack Overflow用户
提问于 2012-07-30 21:45:40
回答 1查看 9.3K关注 0票数 1

我在列中有这样的数据:

代码语言:javascript
复制
  Process   Volume      TAT
  1            1        Pass
  1            2        Fail
  2            5        Fail
  2            5        Pass
  3            1        Pass
  4            6        Fail
  4            4        Pass

现在按进程分组,我想要卷的和(不考虑任何TAT),TAT =通过的卷的和,TAT =失败的卷的和。

像这样

代码语言:javascript
复制
Process     Total Volume    Volume(TAT=Pass)    Volume(TAT = Fail)
1           3               1                   2
2           10              5                   5
...
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-30 21:52:56

对于SQL Server,您可以使用CASE表达式有条件地确定需要添加的数量,然后将它们SUM在一起,如下所示:

代码语言:javascript
复制
SELECT Process, SUM(Volume) AS TotalVolume, 
    SUM(CASE WHEN TAT = 'Pass' THEN Volume ELSE 0 END) AS Pass,
    SUM(CASE WHEN TAT = 'Fail' THEN Volume ELSE 0 END) AS Fail
FROM (
     -- Dummy data here for testing
    SELECT 1 AS Process, 1 as Volume, 'Pass' AS TAT
    UNION SELECT 1, 2, 'Fail'
    UNION SELECT 2, 5, 'Fail'
    UNION SELECT 2, 5, 'Pass'
    UNION SELECT 3, 1, 'Pass'
    UNION SELECT 4, 6, 'Fail'
    UNION SELECT 4, 4, 'Pass'
) MyTable
GROUP BY Process
ORDER BY Process

对于Microsoft Access,不支持CASE,因此您可以使用SWITCHIIF,如下所示:

代码语言:javascript
复制
SUM(IIF(TAT = 'Pass', Volume, 0)) AS Pass
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11722852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档