■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。
【OB23】LISTAGGを使用したSQLの挙動 2023/05/10 13:32 OB 1
ObjectBrowserのv23を使用しており、LISTAGGを使用した場合の想定と違う結果が返ってきたため質問させていただきました。

事象としてはGROUP BYを指定して、LISTAGGを使用したSQLの結果が
最初の1行のみ表示される状況です。
※GROUP BYで指定した項目の種類分、結果出力される想定です。

具体的には以下のような【ユーザテーブル】が存在した場合に、

【ユーザテーブル】
(ユーザID|氏名|部署CD)

以下の【実行SQL】を実行すると想定としては、以下の【想定結果】のように部署CDの種類分結果が出力される想定です。
しかし現状【実際結果】のように部署Aの1件のみしか取得できない状況です。
原因わかりましたらご教授いただけると幸いです。

【実行SQL】
SELECT 部署CD
,LISTAGG(氏名,',') WITHIN GROUP (ORDER BY ユーザID)
FROM ユーザテーブル
GROUP BY 部署CD

【想定結果】
(部署A|テスト1,テスト2,テスト3)
(部署B|テスト4,テスト5)
(部署C|テスト6,テスト7)
・・・

【実際結果】
(部署A|テスト1,テスト2,テスト3)

<補足>
・SQLPlusにて【実行SQL】を実行すると、【想定結果】が出力されます。
・LISTAGGの他に2つ以上SELECTに項目があれば、想定通り複数行出てきます。

例えば今回の例ですと実行SQLを
SELECT 部署CD
,LISTAGG(氏名,',') WITHIN GROUP (ORDER BY ユーザID)
,MIN(ユーザID)
FROM ユーザテーブル
GROUP BY 部署CD

とすると以下のように複数結果が出力されます。

(部署A|テスト1,テスト2,テスト3|1)
(部署B|テスト4,テスト5|4)
(部署C|テスト6,テスト7|6)
・・・
こんにちは。OBサポートです。

お問い合わせいただいた件につきましてですが、
初期化パラメータ[MAX_STRING_SIZE]がEXTENDEDに拡張されている環境において
事象が再現することを確認いたしました。

大変恐縮ですが、本件はSI Object Browserの内部コンポーネントに起因する動作となり
ご提示いただいた「SELECT句の項目に、LISTAGGの他に2つ以上項目を記載する」以外の
回避方法が現状ございません。

本件につきましては、開発側に伝え今後のバージョンアップで対応を検討してまいります。

何卒、よろしくお願い申し上げます。