2016-12-07 6 views
0

Netezzaでピボット列に動的な名前を付ける方法はありますか? SSMSではストアドプロシージャを使用しますが、新しいNetezzaボックスはSP作成を制限します。 CASEステートメントを使用すると、行番号を使用して月ごとに1日の合計をピボットすることができますが、新しい列名は行番号ではなく実際の任意のMONTHにしたい(MONTH_ID1にはROW_NUMBER 1-12と対応するMONTHIDが含まれています)。たとえば、戦略的に配置された見積もりやサブクエリを考えていますが、動作させることはできません。Netezzaの動的列の名前付け

select "DAY" 
,sum(case when "ROW_NUMBER" = 1 then SUMOFCHGS else null end) as "1" 
,sum(case when "ROW_NUMBER" = 2 then SUMOFCHGS else null end) as "2" 
,sum(case when "ROW_NUMBER" = 3 then SUMOFCHGS else null end) as "3" 
,sum(case when "ROW_NUMBER" = 4 then SUMOFCHGS else null end) as "4" 
,sum(case when "ROW_NUMBER" = 5 then SUMOFCHGS else null end) as "5" 
,sum(case when "ROW_NUMBER" = 6 then SUMOFCHGS else null end) as "6" 
,sum(case when "ROW_NUMBER" = 7 then SUMOFCHGS else null end) as "7" 
,sum(case when "ROW_NUMBER" = 8 then SUMOFCHGS else null end) as "8" 
,sum(case when "ROW_NUMBER" = 9 then SUMOFCHGS else null end) as "9" 
,sum(case when "ROW_NUMBER" = 10 then SUMOFCHGS else null end) as "10" 
,sum(case when "ROW_NUMBER" = 11 then SUMOFCHGS else null end) as "11" 
,sum(case when "ROW_NUMBER" = 12 then SUMOFCHGS else null end) as "12" 
FROM DLYAMTS D 
    JOIN MONTH_ID1 M ON D.MONTHID = M.MONTHID 
GROUP BY 1 
ORDER BY 1 

私は列の数が可変で、将来的にこれをやって想像することができますが、私はちょうど今の月の列の年分を探しています。

答えて

1

「テーブルオブジェクト」を返すspを作成する場合、私は同じ理解ができます:不可能です。 当店では、一連の引数に基づいて(永久的な)テーブルを作成するspを作成しました。これらの引数の1つが「ターゲットテーブル名」です。あなたのケースの他の引数: '入力テーブル名'、 'グループ別列'、 'where句'、 'organize on'列、 'distribute on'列。

私はこのことができます:)

ラース

を願っています

関連する問題