2017-12-07 4 views
0

大学の大規模なOracleデータベース用にさまざまなSQLクエリを書いています。出力は利用可能な度合いと関連情報のリストです。Oracleデータセットの「バージョン」列に基づいて行の違いを表示するにはどうすればよいですか?

私は今、バージョン間で変更されたかを示すための方法を見つける必要がある(「バージョン」と呼ばれる列に基づいています。データが変更されたときに新しいバージョンが作成されます)私は出力に基づいて、違いを強調するかもしれませんどのように

クエリでの私の選択の?あなたが見ることができるように、私はテーブルのさまざまな方法を使ってすることがあります

 

    SELECT 
     -- DETAILS 
    b.programmeid, 
    b.programmecode AS course_udc, 
    b.programmeversion AS version, 
    b.externalversion AS external_version, 
    b.programme AS full_title, 
     -- OUTCOMES 
    b.programmeoutcomeid AS outcome_number, 
    b.outcomedesc AS outcome_description, 
    b.programmeoutcometypeid AS graduate_attribute_link 
    FROM 
    (
    SELECT 
       -- DETAILS 
    a.programmeid, 
    a.programmecode, 
    a.programmeversion, 
    a.externalversion, 
    a.programme, 
       -- OUTCOMES 
    a.programmeoutcomeid, 
    a.outcomedesc, 
    a.programmeoutcometypeid 
    FROM 
    document_application.dmn_domains d, 
    (
    SELECT 
         -- DETAILS 
    ed.dmn_cuid, 
    p.programmeid, 
    p.programmecode, 
    p.programmeversion, 
    p.externalversion, 
    p.programme, 
         -- OUTCOMES 
    plo.programmeoutcomeid, 
    (dbms_lob.substr(pso.suboutcomedesc,4000,1)) AS outcomedesc, 
    plo.programmeoutcometypeid 
    FROM 
    document_application.programmes p 
    INNER JOIN document_application.edm_entitydomains ed ON p.cuid = ed.entitycuid -- Join with EDM_ENTITYDOMAINS 
    INNER JOIN document_application.programmeoutcomes plo ON p.programmeid = plo.programmeid -- Join with PROGRAMMEOUTCOMES 
    INNER JOIN document_application.programmesuboutcomes pso ON plo.programmeoutcomeid = pso.suboutcomeid -- Join with PROMGRAMMESUBOUTCOMES 
    WHERE 
    p.programmecode IN (
    SELECT 
    p.programmecode 
    FROM 
    document_application.programmes p 
    GROUP BY 
    p.programmecode 
    HAVING 
    COUNT(*) > 1 
    ) 
    AND ed.ett_code = 'P' 
    ) a 
    WHERE 
    a.dmn_cuid = d.cuid 
    ) b 
    ORDER BY 
    course_udc, 
    version 

は、これは私が一例として示すことができる最小のクエリです。 b.programmeversionはバージョン間の変更を表示する必要があるバージョンの列です。

これは、1つのバージョンと他の間の変更を示すために出力 output

+0

サンプルデータと予想される結果セットを投稿してください。 – XING

+0

ほとんど無限の可能性のある範囲を含むことができるケース式などのさまざまなデバイスがあります。詳細を知りたい場合は、まず詳細を提供する必要があります。現在のクエリやサンプルデータはどうやって始めるのですか? –

+0

あなたも見ているテーブルの定義を投稿できますか? –

答えて

0

の一例である、あなたはMINUS句を使用することができます。

  • バージョンv1にあった、ではなく、それ以上のバージョンv2の新

     select c1, c2, c3 from result_set where VERSION='v1' 
    minus select c1, c2, c3 from result_set where VERSION='v2' 
    
  • v2であった:あなたはv1v2間の列c1, c2, c3のレベルで変更内容を確認したいと言いますnot in v1

     select c1, c2, c3 from result_set where VERSION='v2' 
    minus select c1, c2, c3 from result_set where VERSION='v1' 
    

これが役に立ちます。

関連する問題