はい、休日出勤でした。
そして、休日出勤の結果、以下のことが分かりました(泣
の後日談というか、結局駄目でしたっていう話。
原因は調べ切れてないけど、連結したテーブルの項目が表示できなかったので、最終的に取得後に件数分のループを回して必要な文字列を構成するという手段を取らざるを得なかった。ぐぬぬ・・・
例
a a1 a a2 a a3 a a4 :こんな出力を
a a1,a2,a3,a4.. ※この例では、「,」を区切り文字にしてます。こんな風に表示を出来てて当初問題なかったんですが、実際に必要とする出力結果では、
「a a1」
では無く、
「あ a1」※「あ」は「a」に対応するマスタの名称
とする必要があったわけ。そのため、前回書いたようにこう書くのではなく・・・
select seq ,listagg(t_seq.name ,',') within group (order by t_seq.name ) as name from t_seq group by seq ; ※この例では、「,」を区切り文字にしてます。こう書く必要があるわけです。
SELECT seq ,LISTAGG(m_data.name ,',') WITHIN GROUP (ORDER BY m_data.name ) AS name FROM t_seq LEFT JOIN m_data ON t_seq.seq = m_data.seq GROUP BY seq ; ※この例では、「,」を区切り文字にしてます。で、このとき、出力結果が正しく表示されなくなったんです。
SQLの使用環境によるかもしれませんが、sqldeveloperで実行しても正しく表示できなかったので今回は使用を見送ることにしました。
実行環境に左右される状況では、ちょっと使えなかった。
ただ、テーブルの連結をしていても、連結したテーブルの項目を使わなければ表示は問題なかったので、原因が分かったら積極的に使って行きたいなと。
[…] […]