年月日単位のデータを年月単位で集計する

2024年3月23日サンプルコンテンツ

本記事では、日付型の項目を使って年月の単位で集計する際の推奨の方法を記載しています。
WebFOCUSが発行するSQLの確認方法については「WebFOCUSからデータベースに発行されているSQLを確認する」を参考にしてください。
※上記の記事を参照するには、WebFOCUS knowledge baseサイトへのログインが必要です。

日付(年月日)を年月に変換する

代表的な日付型は「YYMD(日付型)」と「HYYMDS(日付時間型)」があります。

どちらも年月に変換する場合は「YYMDm」を利用してください。
他に年月フォーマットとして「YYM」や「HYYM」がありますが、SQLに変換されない場合があります。

SQLに変換される例(パフォーマンスが良い例)

YYMDmへの変換例(Oracleのemp表を利用)

HIREDATE項目をYYMDm型に変換しています。
YYMD型からもHYYMDS型からも変換の方法は同じです。

DEFINE FILE EMP
 NENGETSU/YYMDm = HIREDATE;
END
TABLE FILE EMP
SUM SAL
BY NENGETSU
END

WebFOCUSのログ確認(YYMDmへ変換した場合)

データベース側のSQL処理結果が9件、WebFOCUSレポート表示上も9件となっています。

 (FOC2689) 集計が終了しました...
 19.15.34 AE    SELECT
 19.15.34 AE   TRUNC(TRUNC(T1."HIREDATE"),'MONTH'),
 19.15.34 AE    SUM(T1."SAL")
 19.15.34 AE    FROM
 19.15.34 AE   SCOTT.EMP T1
 19.15.34 AE    GROUP BY
 19.15.34 AE   TRUNC(TRUNC(T1."HIREDATE"),'MONTH')
 19.15.34 AE    ORDER BY
 19.15.34 AE   TRUNC(TRUNC(T1."HIREDATE"),'MONTH');
 0(INF32080) テーブルのレコード数 =        9  行数 =      9

SQLに変換されない例(パフォーマンスが悪くなる例)

YYMDからYYMへの変換例(Oracleのemp表を利用、HIREDATEはYYMD型)

DEFINE FILE EMP
 NENGETSU/YYM = HIREDATE;
END
TABLE FILE EMP
SUM SAL
BY NENGETSU
END

WebFOCUSのログ確認(YYMDからYYMへ変換した場合)

WebFOCUSのリクエストをSQLへ最適化できず、集計し切れていない形でデータを取得しているためSQLの結果は12件となり、その後にWebFOCUS側で集計し直して9件となっています。

 19.17.59 BW  (FOC2590) 次の理由で、集計されませんでした
 19.17.59 BW  (FOC2565) オブジェクト NENGETSU (BY/ACROSS) を SQL に変換できません。
 19.17.59 BW  (FOC2571) フィールド NENGETSU に未サポートの日付タイプが含まれています。
 19.17.59 AE    SELECT
 19.17.59 AE   T1."HIREDATE",
 19.17.59 AE   T1."SAL"
 19.17.59 AE    FROM
 19.17.59 AE   SCOTT.EMP T1;
 0(INF32080) テーブルのレコード数 =       12  行数 =      9

トレースコマンド(SQLAGGR)を利用すると、SQLを最適化できなかった理由が表示されます。


サンプルコンテンツの利用における注意事項

株式会社アシストおよび開発元メーカーは、本サンプルコンテンツの動作に関していかなる保証もいたしません。
また、本サンプルコンテンツの利用によって起因する問題についても責任を負いかねます。
本サンプルコンテンツに記載の技術情報およびプログラムは、特定の環境下において動作し、初期動作のみ確認をしております。
すべての個別環境にて動作することを想定していませんので、実装する実環境において、十分な動作確認をいただくことを推奨します。
また、システム環境の設定変更や導入製品のバージョンアップを実施した場合などの非互換については考慮されていません。
初期動作確認後、システム環境変更後の動作については、保証いたしませんので、ご了承ください。
サンプルコンテンツに含まれるプログラムなどの改変は、自由に実施していただいて問題ありませんが、新規要件やバグ修正などが発生した場合には、ご利用者様の責任範囲内での修正を実施いただくようお願いします。
サンプルコンテンツに含まれる、JavaScript,CSS,HTML,バッチファイル、シェルスクリプトなど、WebFOCUS製品サポートに関わらない箇所に関してのお問い合わせは、株式会社アシストの技術者、サポートセンターおよび開発元メーカーで受け付けることができません。WebFOCUSの動作に関するお問い合わせに限らせていただきます。