2015-03-25 24 views
0

我有一個包含3列的表。該表在一定日期存儲一個國家的人口。簡單的例子,使用數據透視表重構表中的數據並處理空值

cen_date country  population 
2010  US   50 
2010  Ger   10 
2010  UK   5 
2011  US   55 
2011  Ger   15 
2011  UK   10 
2011  China  100 

我想什麼做的是有像下面的表格,

 2010  2011 
US  50  55 
Ger 10  15 
UK  5   10 
China NULL  100 

所以,你會發現,有在2010年是中國沒有數據,但我還是會喜歡這個包括在上面的表中,但是作爲NULL。

更新

通過一點線索和錯誤的查詢低於現在的作品

select * 
from 
(
    select country, cen_date , population 
    from Country_Pop  
) org 
pivot 
(
max(population) 
for cen_date in ([2009-01-01], [2010-01-01], [2011-01-01]) 
) piv; 

不能完全確定這一工作,雖然這是爲什麼。我想我必須首先創建一個不同國家的列表,但是猜測它必須與max和pivot函數有關?

+0

是的,謝謝我發佈的查詢給了我一直在尋找的結果 – mHelpMe 2015-03-25 17:18:20

回答

0

步驟1.找到不同的年總沒有。(安排年爲了你want.Add列,如果新的一年裏找到或沒有)

第2步:找到所有不同國家的名稱。(只是讓他們行,加行,如果新的國家以極不)

步驟3.現在填寫的DATAS

0

將這項工作?

SELECT 
    country, 
    [2010] = MAX(CASE WHEN cen_date = 2010 THEN population END), 
    [2011] = MAX(CASE WHEN cen_date = 2011 THEN population END) 
FROM Test 
GROUP BY country