2017-12-14 6 views
0

私はSUBSTR(CALL_TIME、1,6)= '201701' の後、他の0コストケース(ダイナミックNetezzaのピボット

合計すなわちcase文

のシリーズを使用してNetezzaのピボット機能を模倣することができます"2017年1月"、

合計(ケースSUBSTR(CALL_TIME、1,6)= '201702' を "2017年2月"、

合計(ケースSUBSTR(と)他0エンドのコストとして終わり) CALL_TIME、1,6)= '201703'、次に他の費用0 end)を「Mar 2017」

ダイナミックな列名を使用して同じことを行うことは可能ですか?毎月のケースステートメントは個別にしてください。私は似たようなことをする必要がありますが、昼とその痛みになるでしょう。

多くのおかげに関して、

ダン

答えて

0

それは可能ですが、あなたがあなた自身のピボット機能を作成する必要があります。この素晴らしいコードはdynamic-sql-pivoting-stealing-antons-thunderに記載されています。あなたがそれを行うたら

、あなたは簡単に次のようなものを使用して、コストを旋回することができる。

SELECT * 
    FROM TABLE (pivot ('select office, to_char(call_time, ''YYYYMM-MON'') themonth, sum(costs) cost_sum from brianl.deleteme_tbl group by to_char(call_time, ''YYYYMM-MON''), office')); 

マイdeleteme_tblは、オフィス、コスト、およびcall_timeを持っています。これを実行しているから、実際の結果は次のとおりです。

OFFICE 201701-JAN 201702-FEB 201703-MAR 201704-APR 201705-MAY 201706-JUN 201707-JUL 201708-AUG 201709-SEP 
Anchorage 45   23   15   25   25   5   15   50   30 

列がソート順に表示されるように、私はYYYYMMで日付が始まります。

+0

私は目が見えないかもしれませんが、pivot()関数の実際のコードは、あなたがリンクしているページ(または後続のリンク)にはどこにも見つかりません...もっと助けてください...さらに、oracleのPL/SQLはnetezzaとの互換性はありません。機能よりもストアドプロシージャのほうが........ –

+0

@LarsGOlsenこの記事のソース:AntonsPivoting.zipをダウンロードしてください。 SCOTTとして接続するには、まずpivotFun.sqlを実行し、次にpivot.sqlまたはpivot_distances.sqlを実行します。 AntonsPivoting.zipのリンクは[link]です(https://technology.amis.nl/wp-content/uploads/images/antonsPivoting.zip) –

+0

ありがとうございます - 私が疑ったように:私は盲目でした:) –