申し訳ありませんこれが尋ねられた場合、少し検索して、私の後ろのものと非常によく似たものを見つけられませんでした。複数のテーブルから複数の列を連結してくださいOracle
私は、Oracleを使用しており、複数のテーブルで複数の列にまたがって結果を集計しようとしています。
SELECT
LISTAGG(users.user_name, ',') WITHIN GROUP (ORDER BY users.user_name)
FROM
users,
project_users
WHERE
project_users.user_id = users.id
AND project_users.project_id = 123
GROUP BY ID
;
:私はのようなクエリを使用して、単一のフィールドに特定のプロジェクトの出力であるユーザーを見つけることのようなことをやって、いくつかの成功のためにLISTAGGを使用することができました
Table: USERS
--------------
ID | USER_NAME
--------------
1 | Bob
2 | Joe
3 | Mary
Table: PROJECT_USERS
----------------------------------
USER_ID | PROJECT_ID | ACCESS_TYPE
----------------------------------
1 |123 |8
1 |456 |9
1 |789 |10
2 |123 |10
2 |456 |9
2 |789 |8
3 |123 |9
3 |456 |10
3 |789 |10
:下記の例
(謝罪構文は、これは私が住んで使用している正確なクエリではありませんので、理由のために、実際の構造とデータを不明瞭に、少し上記ではオフになっている場合) だろう出力:
Bob,Joe,Mary
しかし、どのような出力はおそらくで区切られた2つの値を使用して、同様の形式で集計USERS.USER_NAMEとPROJECT_USERS.ACCESS_TYPEの組み合わせになるために私がしたい -
Bob-8,Joe-10,Mary-9
私が得ることができ、個々の戻り
Bob-8
Joe-9
Mary-10
そして、私はその後、それらの結果をLISTAGG可能性が期待していたが、残念ながらグラムすることができていないの返却
SELECT users.user_name || '-' || project_users.access_type...
それは働くこと。先に述べたように、一時テーブルはすぐに出てきます。なぜなら、私が入りたくない理由があるからです。 FROMでSELECTを使用するとうまくいきませんが、最後にはサブクエリでこれを使用できるようにしたいと思いますが、私の理解(そして試した経験が限られています)は正しく反復されません各パス。たぶん私は間違っていますが、ちょうど間違っていました。
提案がありますか?
ありがとうございます!
実際にあなたがリストでそうであるようにカンマ区切り値とは対照的に、あなたは、サブクエリでそれを使用しようとしている場合は、データを返すことが容易ではないでしょうか? – BobC
@BobCが理想的ですが、これが使用されているレポートは、データを解析して別のものに再入力するために不器用に使用されています。それは本当に醜いですが、私は物事をどうやってやるのでしょうか。しかし、結局、私はサブクエリを使用してそれを使うために一行を返す必要があります。明らかに、適切なデータの完全性基準が犯されることはありません。 – CascadeOverflow