2012-02-03 5 views
2

この質問は他の場所に問い合わせがあるかどうかわかりません。私はそれを置く方法もわかりません。しかし、私はシナリオで説明します。
私は、次の表
列を持つ TAB1いる:USERID、コード、国の列を持つ
TAB2:USERID、CODE、EMAILPL/SQL - 列の値を文字列配列として選択してください

例の内容:私は選択クエリから

TAB1: 
RISHI, A1B2C3, INDIA 
RISHI, D2E3F4, INDIA 
KANTA, G3H4I5, INDONESIA 

TAB2: 
RISHI, A1B2C3, [email protected] 
RISHI, A1B2C3, [email protected] 
RISHI, A1B2C3, [email protected] 
RISHI, D2E3F4, [email protected] 
RISHI, D2E3F4, [email protected] 
KANTA, G3H4I5, [email protected] 

を欲しいです私が選択した場合は同様

RISHI, INDIA, A1B2C3, ([email protected], [email protected], [email protected]) 
RISHI, INDIA, D2E3F4, ([email protected], [email protected]) 

:またはPL/SQLストアドプロシージャは、このような結果である

select a.userid, a.code, a.country, b.email 
from tab1.a, tab2.b 
where a.userid = b.userid 
and a.code = b.code 
and a.userid = 'RISHI'; 

私はその結果を取得する:私は基本的に配列にまとめた電子メールのIDで必要なもの

RISHI, INDIA, A1B2C3, [email protected] 
RISHI, INDIA, A1B2C3, [email protected] 
RISHI, INDIA, A1B2C3, [email protected] 
RISHI, INDIA, D2E3F4, [email protected] 
RISHI, INDIA, D2E3F4, [email protected] 

。 TAB1には実際に必要な列がほかにもたくさん含まれていますが、この例では省略していますが、TAB2にはこれらの3つの列しかありません。

答えて

1
select a.userid, a.code, a.country, listagg(b.email, ',') within group (order by b.email) as "Emails" 
from tab1.a, tab2.b 
where a.userid = b.userid 
and a.code = b.code 
and a.userid = 'RISHI' 
group by a.userid, a.code, a.country; 
+0

まあ、これが唯一のOracle 11gのリリースで提供されていますLISTAGG見出した2私たちはリリース1を使用しています。ありがたいことに、私の要件は変わりました。私はこの必要はありませんもうもう。しかし、これは知っておくと非常に便利です。ありがとう。 – rishi

0

私はGROUP_CONCAT集計関数をMySQLで使いたいと思います。悪質なニュースは、Oracleにはグループの統合のための組み込み関数がなく、良いニュースは、そのような機能をエミュレートできることです。

このスニペットを見てみましょう。

with data 
    as 
    (
      select job, 
       ename, 
       row_number() over (partition by job order by ename) rn, 
       count(*) over (partition by job) cnt 
     from emp 
    ) 
select job, ltrim(sys_connect_by_path(ename,','),',') scbp 
    from data 
    where rn = cnt 
    start with rn = 1 
    connect by prior job = job and prior rn = rn-1 
    order by job 

と戻ります

JOB  SCBP 
--------- ---------------------------------------- 
ANALYST FORD,SCOTT 
CLERK  ADAMS,JAMES,MILLER,SMITH 
MANAGER BLAKE,CLARK,JONES 
PRESIDENT KING 
SALESMAN ALLEN,MARTIN,TURNER,WARD 

REFERENCE

+1

11gは – tbone

関連する問題