2015-04-12 20 views
0

從我之前的問題中,我已經設法使用Microsoft SQL Server使用Excel導入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

只是添加了示例數據。讓我知道如果還有什麼我應該補充的。 – mystery578

回答

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的例子。

+0

謝謝!這真的很有幫助!好的,一個方面,是否有一個函數在sql中,我可以知道一個日期(寫爲DD/MM/YYYY)是否在一週中的某一天(例如,2015年4月13日是星期一)? – mystery578

+0

只是增加了一個新的擴展問題。 – mystery578