如何使用条件的Sum()函数?

时间:2017-05-30 18:10:09

标签: sql tsql ms-access

我有一个Access数据库。有一个名为cost的表,其底值为:

  reson          Cost       Type
------------    ------   ------
  A1              2500      1
  A1              6500      1
  A2              95000     2
  A3              2500      1
  A1              6500      1
  A4              50000     2

现在我想要一个查询,计算所有成本的总和,其中type = 2和成本总和,其中type = 1,并减去第二个值中的第一个值。

例如,上面的pic计算最终结果:

Sum of Type 2 = 145000
Sum of Type 1 = 18000
-------------------------
Final Result = 127000

我的Sql代码

select iif(type = 2, sum(cost), -sum(cost)) As col1 from cost  group by type

2 个答案:

答案 0 :(得分:2)

首先,我很抱歉你在这里提出问题时必须处理这种令人讨厌的敌意。你完全问了你的问题,列出了你的桌子结构,以及你想要的结果。您不熟悉查询并需要帮助创建查询,这是可以理解的。并非每个答案都需要代码,并不是每个人都知道从哪里开始。

这是你的答案:

第1步 确保使用您提供的数据创建表 enter image description here

第2步 创建名为qySumType1的新查询。像这样构建它,因此它总结了type = 1的所有内容。确保单击总计按钮。 enter image description here

第3步 创建另一个查询,将其命名为qySumType2。此查询应该对type = 2的所有内容求和。 enter image description here

第4步 现在创建另一个名为“Final”的查询。将以前的两个查询添加到其中。现在在最后一列中创建一个表达式来计算两个数字之间的差异。像这样。 enter image description here

你有它。现在,只要您想要获得差异,就可以运行最终查询。 {{0}}

希望这有帮助!我不能告诉你有多少次我开始学习新东西并依靠社区来帮助我开始学习。始终只是尽力而为,等待你的问题得到一个体面的答案。祝你好运!

答案 1 :(得分:2)

T1 更改为您的表名。

SELECT Sum(T.Type1) AS Type1, Sum(T.Type2) AS Type2, Sum(T.Type2) - Sum(T.Type1) AS DIFF
FROM 
(
    SELECT Sum(T1.Cost) AS Type1, 0 AS Type2
    FROM T1
    WHERE (((T1.Type)=1))
    UNION
    SELECT 0 AS Type1, Sum(T1.Cost) AS Type2
    FROM T1
    WHERE (((T1.Type)=2))
)  AS T;
  

Type1 | Type2 | DIFF

     

18000 | 145000 | 127000