2016-08-10 188 views
1

如何聲明更改的列名稱?SQL動態列名稱

我從DB一些數據,我很感興趣,過去12個月,所以我只能採取happend事件,讓我們在說「2016-07」,「2016-06」等等......

然後,我想我的表看起來像這樣:

event type | 2016-07 | 2016-06 
------------------------------- 
    A  | 12 | 13 
    B  | 21 | 44 
    C  | 98 | 12 

我怎樣才能達到這樣的效果,該列使用以前YYYY-MM模式命名,牢記與該查詢的報告可以執行任何時間,所以它會改變。

只對上一個月份

簡化查詢:

select distinct 
    count(event), 
    date_year_month, 
    event_name 
from 
    data_base 
where date_year_month = TO_CHAR(add_months(current_date, -1),'YYYY-MM') 
group by event_name, date_year_month 
+0

你的問題似乎完全混淆了我:)做一些簡化,並添加一些更多的細節。 –

+0

剛剛編輯,希望現在明確:) –

+1

結帳透視...您可以製作動態數據透視圖,將您的結果轉化爲您想要的東西 – Veljko89

回答

0

我不認爲有旋轉年月列的自動化的方式,並動態地根據數據更改結果列數。

但是,如果您正在尋找pivoting解決方案,您可以在netezza中使用表函數。

select event_name, year_month, event_count 
from event_counts_groupby_year_month, table(inza.inza.nzlua(' 
local rows={} 
function processRow(y2016m06, y2016m07) 
    rows[1] = { 201606, y2016m06 } 
    rows[2] = { 201607, y2016m07 } 
    return rows 
end 

function getShape() 
    columns={} 
    columns[1] = { "year_month", integer } 
    columns[2] = { "event_count", double } 
    return columns 
end', 
y2016m06, y2016m07)); 

你很可能建立在這樣的包裝,以動態地生成基於當前的年,月,在表格中使用shell腳本查詢。