将两个总和的结果一起插入表中

时间:2015-04-12 18:05:18

标签: sql sum

从我之前的问题开始,我已经设法使用Microsoft SQL Server将excel文件导入新数据库。现在,我的问题是处理编写正确的sql命令。我试图使用不同的标准两次总结表的相同列,然后将这些数字输入到不同的表。我知道如何向表中插入一个总和,但我想知道如何同时插入两个来自同一列的总和(因为每次插入时,都会创建一个新行)到表的同一行。

其他问题:我应该如何组织我的结果取决于第三张表中的值?样本数据如下。

一些示例数据:

DeptID      Department
15          Eng
16          Eng
17          Mkt
18          Mkt


| Person |    DeptID  | Type | Number  | 
+--------+------------+------+---------+
|   A    |     15     |  p1  |   1     |
|   B    |     18     |  p2  |   5     |
|   C    |     16     |  p2  |   10    |
|   D    |     17     |  p1  |   7     |
|   E    |     18     |  p1  |   11    |
|   F    |     16     |  p2  |   12    |

所以我应该给出的结果是:

| Department | Sum of p1  | Sum of p2 |
+------------+------------+-----------+
|     Eng    |     1      |     22    |
|     Mkt    |     18     |     5     |

我尝试的内容如下:

select sum(Amount) as engsump1 from Sheet1$
where Department = 'Eng' and Type = 'p1'

select sum(Amount) as engsump2 from Sheet1$
where Department = 'Eng' and Type = 'p2'

select sum(Amount) as mktsump1 from Sheet1$
where Department = 'Mkt' and Type = 'p1'

select sum(Amount) as mktsump2 from Sheet1$
where Department = 'Mkt' and Type = 'p2'

运行一次,在看到结果后,执行插入功能。我只是想知道我是否可以一步完成这两步。

1 个答案:

答案 0 :(得分:1)

要对每个组中的“数字”列求和,可以使用SUM()函数;只需在其中放置一个case语句,这样就可以在类型为p1时对案例进行求和,并在类型为p2时求和。

要分隔部门,只需使用GROUP BY子句。试试这个:

SELECT department, 
  SUM(CASE WHEN type = 'p1' THEN number ELSE 0 END) AS totalP1,
  SUM(CASE WHEN type = 'p2' THEN number ELSE 0 END) AS totalP2
FROM myTable
GROUP BY department;

以下是SQL Fiddle示例。