2014-12-02 67 views
0

我有一個表,每個月有一列我需要添加。我需要做一個查詢來將它全部顯示在一張表中。我做的第一件事就是將所有表聯合起來以獲得獨特的國家。如何配置此ms訪問查詢,我開始產生我需要的輸出?SUM IF查詢多表

實施例表:

表1:2014年1月

| Country | Headcount | 
| USA | 100 | 
| China |  50 | 
| Russia |  75 | 
| USA |  10 | 

表2:2014年2月

| Country | Headcount | 
| USA | 100 | 
| China |  50 | 
| Mexico |  100 | 
| China |  75 | 

表3:全部國家

| Country | 
| USA | 
| China | 
| Mexico | 
| Russia | 

所需的輸出:

| Country | January | February | 
| USA | 110 | 100  | 
| China | 50  | 125  | 
| Russia |  75 | 0   | 
| Mexico |  0  | 100  | 

這是我的查詢,到目前爲止,但它似乎並沒有工作..

SELECT a.[Country] As Country, 
SUM(IIF(a.[Country] = b.[Country], b.[Headcount],0)) As January 
SUM(IIF(a.[Country] = c.[Country], c.[Headcount],0)) As February 
FROM [All Countries] As a, 
(SELECT [Headcount], [Country] FROM [January 2014]) As b, 
(SELECT [Headcount], [Country] FROM [February 2014]) As c 
GROUP BY a.[Country] 
+0

我可以知道爲什麼我得到降價? – mfrancisp 2014-12-02 06:45:23

+0

根據標識符使用'[[...]'[ – 2014-12-02 10:27:06

+0

]添加了'sql-server'標籤您的表中是否有任何主鍵? – duck 2014-12-02 06:49:34

回答

1

這是一個辦法,應該工作 - (編輯)

SELECT a.[Country] As Country, 
SUM(IIF(a.[Month] = "Jan", b.[Headcount],0)) As January 
SUM(IIF(a.[Month] = "Feb", c.[Headcount],0)) As February 

FROM  (
SELECT [Headcount], [Country], "Jan" AS [Month] FROM [January 2014] 
UNION ALL 
SELECT [Headcount], [Country], 'Feb' AS [Month] FROM [February 2014] 
UNION ALL 
... 
) AS a 
GROUP BY a.[Country] 
0

我會嘗試這樣的事:

SELECT a.country, 
(SELECT SUM(b.headcount) FROM table1 b WHERE b.country = a.country) as january, 
(SELECT SUM(c.headcount) FROM table2 c WHERE c.country = a.country)as february 
FROM countries a 

GROUP BY a.`country`