2017-11-21 8 views
1

私は二つの異なる行レコード

TERM CRN SUBJ CRSE SCHD_CODE 
2016 104 BIOL  252  B 
2016 104 BIOL  252  L 
2017 123 MATH  201  E 
2017 123 MATH  201  S 

は、グループを使用して「SCHD_CODE」フィールドに連結を思い付くためにSQL文を生成することが可能です私のOracleデータベースに次の行の記録を持っているから連結を生成します下のサンプルのように???

Select term, CRN, SUBJ, CRSE, (SCH_CODE||'/'|| SCH_CODE) from xx 
GROUP BY term, CRN, SUBJ, CRSE 

所望の出力の下に持っている必要があります

TERM  CRN  SUBJ CRSE SCHD_CODE 
2016  104  BIOL  252  B/L 
2017  123  MATH  201  E/S 

答えて

0

あなたが自己を試しても参加:

select * from (
    select 
    case when table1.SCHD_CODE <> table2.SCHD_CODE then "" else NULL END as test, 
    table1.TERM,table1.SUBJRN,table1.SUBJ,table1.CRSE,table1.SCHD_CODE, (table1.SCHD_CODE||'/'||table2.SCHD_CODE) 
    from result table1 
    join result table2 on table1.TERM=table2.TERM 
    and table1.SUBJRN=table2.SUBJRN 
    and table1.SUBJ=table2.SUBJ 
    and table1.CRSE=table2.CRSE) b where test is not null 
0

それだけ単にMINMAXを使用し、CONCAT 2行に必要とされる場合。

Select term, CRN, SUBJ, CRSE 
    ,(MIN(SCH_CODE)||'/'|| MAX(SCH_CODE)) from xx 
GROUP BY term, CRN, SUBJ, CRSE 
3

使用LISTAGG、これを試してみてください:

SELECT term, 
     CRN, 
     SUBJ, 
     CRSE, 
     LISTAGG(SCHD_CODE, '/') WITHIN GROUP (ORDER BY schd_code) AS schd_code 
FROM xx 
GROUP BY term, CRN, SUBJ, CRSE 
関連する問題