2016-08-10 9 views
1

変更する列名はどのように宣言しますか?SQL動的列名

...私はDBからのいくつかのデータを取り、私は最後の12ヶ月間に興味がありますので、私は唯一のは、そうで「2016から07」、「2016から06」で言うと聞かせて、起こった事象を取ります私は列がそのクエリとレポートはいずれかを実行することができることを念頭に置いて、前のYYYY-MMパターンを使用して命名されているこの効果を実現するにはどうすればよい

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

を:

はその後、私は私のテーブルは次のようになりたいですそれは変わるだろう。私は年ヶ月のコラムを旋回する自動化された方法があると思うし、データに基づいて動的に結果の列数を変更しない

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

:唯一の前の月のクエリを簡素化

しかし、ピボット・ソリューションをお探しの場合は、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)); 

あなたはおそらく動的にシェルスクリプトを使用してテーブル内の年の月の存在に基づいてクエリを生成するには、この上のラッパーを構築することができます。