■SI ObjectBrowser掲示板

ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!discussion
ユーザーのみなさま同士で教え合ったり、アドバイスしたりする暖かい交流の場にしたいと思っていますので、相互協力をよろしくお願いします。なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

※◆のカラーは投稿の対象となる製品に対応しています。【…OB …OBER …全般 ◇…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。




LISTAGGをSQL整形でGROUPがGROUP BYに 2019/03/22 18:32:45
初心者その1
SI ObjectBrowser 18 のSQL整形で以下のSQLを整形すると
GROUP が GROUP BY になります。

整形前
select LISTAGG(name) WITHIN GROUP (order by null) concat_name

整形後
SELECT LISTAGG(NAME) WITHIN
GROUP BY (
ORDER BY NULL) CONCAT_NAME

これは正しい動作ですか。

私の使っているOracleでは整形後のSQLを実行すると ORA-00906 になります。
元の文章を引用して返信

Re: LISTAGGをSQL整形でGROUPがGROUP 2019/03/26 10:32:03
OBサポート           oob.support@sint.co.jp
こんにちは。
OBサポートです。

お問い合わせいただいた件につきましてですが、現状ではLISTAGG関数に対応しておらず

WITHIN 「GROUP」がGROUP BY句の一部として判断されるためご報告のような現象が発生しております。

LISTAGG関数を含むSQLを整形した場合は上記の誤判定に伴い、GROUPの後に
「BY」を補う動作となっておりますためSQLの構文エラーが発生する状況となります。

SQL整形を実施されましたのち、手動にて「BY」を消去いただくことで
構文エラーは発生しなくなるものと存じますので、お手数ですが
ご確認いただけますと幸いです。

何卒、よろしくお願い申し上げます。
元の文章を引用して返信

Re: LISTAGGをSQL整形でGROUPがGROUP 2019/03/27 18:21:54
初心者その1
ご回答いただき、ありがとうございます。
以下の件、承知しました。

>お問い合わせいただいた件につきましてですが、現状ではLISTAGG関数に対応しておらず
>
>WITHIN 「GROUP」がGROUP BY句の一部として判断されるためご報告のような現象が発生しております。
>
>LISTAGG関数を含むSQLを整形した場合は上記の誤判定に伴い、GROUPの後に
>「BY」を補う動作となっておりますためSQLの構文エラーが発生する状況となります。
>
>SQL整形を実施されましたのち、手動にて「BY」を消去いただくことで
>構文エラーは発生しなくなるものと存じますので、お手数ですが
>ご確認いただけますと幸いです。

今後とも宜しくお願いいたします。
元の文章を引用して返信