Oracle:Listagg

user3111598

私はSQLを初めて使用し、複数の行にまたがる一連のコメントをグループ化しようとしています。具体的には、RMK_TEXT列を集約し、RMK_LINENOで並べ替えます。

誰かが私を助けることができますか?

SELECT
ALL_AGREEMENTS.AGMT_NUM,
PROVISION_TYPES.STIP_TYPE_DESC,
GENERAL_REMARK_TEXT.RMK_LINENO,
LISTAGG(GENERAL_REMARK_TEXT.RMK_TEXT) WITHIN GROUP (ORDER BY GENERAL_REMARK_TEXT.RMK_LINENO) RMK_TEXT
FROM
  STIPULATION_PROVISIONS,
  ALL_AGREEMENTS,
  STIPULATION_TYPES  PROVISION_TYPES,
  GENERAL_REMARK_TEXT,
  GENERAL_REMARKS
WHERE
  ( ALL_AGREEMENTS.ARRG_KEY=STIPULATION_PROVISIONS.ARRG_KEY(+)  )
  AND  ( STIPULATION_PROVISIONS.STIP_TYPE_CODE=PROVISION_TYPES.STIP_TYPE_CODE(+)  )
  AND  ( PROVISION_TYPES.STIP_CATG_CODE = 'PRV'  )
  AND  ( GENERAL_REMARKS.GEN_RMK_FK(+)=STIPULATION_PROVISIONS.STIP_KEY AND GENERAL_REMARKS.RMK_TYPE_CATG(+) = 'PRV'  )
  AND  ( GENERAL_REMARKS.RMK_KEY = GENERAL_REMARK_TEXT.RMK_KEY(+)  )
  AND  ( GENERAL_REMARKS.RMK_TYPE_CATG (+)  = 'PRV'  )
  AND  ( ( ALL_AGREEMENTS.ARRG_ORG_KEY IN
  (SELECT ARRG_ORG_KEY 
  FROM BO_USER_DATA_PRIVS
  WHERE OBJECT_TYPE_CD = 'area'
  AND SEC_USER_ID = UPPER('user'))
AND ALL_AGREEMENTS.SUBJ_CODE IN
  (SELECT SUBJ_CODE
  FROM BO_USER_DATA_PRIVS
  WHERE OBJECT_TYPE_CD = 'SUBJ'
  AND SEC_USER_ID = UPPER('user')) )  )
  AND  
  (
   (
    ALL_AGREEMENTS.AGMT_NUM  IN  ( '00003000','00004000','00005001','00005002','00005003','00006000','00007000','00008000','00009000','00010000','00021000','00022000','00023000','00024000','00025000','00026000' )
   )
   AND
   PROVISION_TYPES.STIP_TYPE_DESC  IN  ( 'provision'  )
   AND
   STIPULATION_PROVISIONS.EXST_FLAG  IN  ( 'Y'  )
  )
GROUP BY ALL_AGREEMENTS.AGMT_NUM
MT0

このようなもの:

SELECT
  a.AGMT_NUM,
  p.STIP_TYPE_DESC,
  s.EXST_FLAG,
  ( SELECT LISTAGG( t.RMK_TEXT, CHR(13) || CHR(10) )
             WITHIN GROUP ( ORDER BY t.RMK_LINENO )
    FROM   GENERAL_REMARKS r
           INNER JOIN GENERAL_REMARK_TEXT t
           ON ( r.RMK_KEY = t.RMK_KEY)
    WHERE  r.GEN_RMK_FK = s.STIP_KEY
    AND    r.RMK_TYPE_CATG = 'PRV'
  ) AS Remarks
FROM
  ALL_AGREEMENTS a
  LEFT OUTER JOIN STIPULATION_PROVISIONS s
  ON ( a.ARRG_KEY = s.ARRG_KEY )
  LEFT OUTER JOIN STIPULATION_TYPES  p
  ON ( s.STIP_TYPE_CODE = p.STIP_TYPE_CODE )
WHERE
    p.STIP_CATG_CODE = 'PRV'
AND  EXISTS ( SELECT 1
              FROM   BO_USER_DATA_PRIVS b
              WHERE  OBJECT_TYPE_CD = 'LAND'
              AND    SEC_USER_ID = UPPER('user')
              AND    a.ARRG_ORG_KEY = b.ARRG_ORG_KEY
            )
AND  EXISTS ( SELECT 1
              FROM   BO_USER_DATA_PRIVS b
              WHERE  OBJECT_TYPE_CD = 'SUBJ'
              AND    SEC_USER_ID = UPPER('user')
              AND    a.SUBJ_CODE = b.SUBJ_CODE
            )
AND  a.AGMT_NUM  IN ( 'OH00003000','OH00004000','OH00005001','OH00005002','OH00005003','OH00006000','OH00007000','OH00008000','OH00009000','OH00010000','OH00021000','OH00022000','OH00023000','OH00024000','OH00025000','OH00026000' )
AND  p.STIP_TYPE_DESC  = 'provision'
AND  s.EXST_FLAG  = 'Y';

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Oracle Listagg Sub query

分類Dev

Oracle10gのLISTAGG代替

分類Dev

listagg 問題の Oracle RTRIM

分類Dev

OracleでのLISTAGG関数の使用

分類Dev

How to derive max date on LISTAGG Oracle 12c

分類Dev

'not a single-group group function' in oracle when using LISTAGG

分類Dev

Retrieve distinct values with LISTAGG in Oracle 12C

分類Dev

Oracleクエリでlistaggの条件を使用する方法

分類Dev

SQL(oracle)のUDTでLISTAGGを使用する方法は?

分類Dev

Oracle SQLのgroupとlistaggを使用して、列と行を連結します

分類Dev

Oracle Migrationでは、「WM_CONCAT(col)」を「LISTAGG(col、 '、')」として定義します。

分類Dev

Oracle12CのLISTAGGを使用して個別の値を取得する

分類Dev

OracleでLISTAGGを実行させることができませんか?

分類Dev

Oracle SQLは行を条件付きの列listaggに集計します

分類Dev

OracleのLISTAGGは数値データ型を処理しますか

分類Dev

複数の値でOracleのLISTAGG関数を使用するにはどうすればよいですか?

分類Dev

Oracleのlistaggからトップレコードを取得するにはどうすればよいですか?

分類Dev

OracleでLISTAGGを使用した文字列フォーマット。一重引用符のエスケープ `` ''

分類Dev

LISTAGG(Oracle)からのCSVの文字列を正しく整列する列に分割します

分類Dev

クエリをOracleからSQLServerに変換し、ListAggを変換する必要があります

分類Dev

Oracleで「withas」および「listagg」を使用するとエラーが発生しました

分類Dev

OracleのlistaggとしてSQLサーバーを使用してリストで出力結果を選択する方法

分類Dev

OracleのLISTAGG関数に類似したSparkDataframeの実装-グループ内で注文できません

分類Dev

verticaのLISTAGG

分類Dev

listaggでの問題

分類Dev

LISTAGG奇妙な連結

分類Dev

Oracle DBでLISTAGGを使用する場合、文字列からCHR(0)を削除するにはどうすればよいですか?

分類Dev

Oracle 11g +の集約要素の数に応じてLISTAGG()の結果を変更するにはどうすればよいですか?

分類Dev

groupbyのないlistagg関数

Related 関連記事

  1. 1

    Oracle Listagg Sub query

  2. 2

    Oracle10gのLISTAGG代替

  3. 3

    listagg 問題の Oracle RTRIM

  4. 4

    OracleでのLISTAGG関数の使用

  5. 5

    How to derive max date on LISTAGG Oracle 12c

  6. 6

    'not a single-group group function' in oracle when using LISTAGG

  7. 7

    Retrieve distinct values with LISTAGG in Oracle 12C

  8. 8

    Oracleクエリでlistaggの条件を使用する方法

  9. 9

    SQL(oracle)のUDTでLISTAGGを使用する方法は?

  10. 10

    Oracle SQLのgroupとlistaggを使用して、列と行を連結します

  11. 11

    Oracle Migrationでは、「WM_CONCAT(col)」を「LISTAGG(col、 '、')」として定義します。

  12. 12

    Oracle12CのLISTAGGを使用して個別の値を取得する

  13. 13

    OracleでLISTAGGを実行させることができませんか?

  14. 14

    Oracle SQLは行を条件付きの列listaggに集計します

  15. 15

    OracleのLISTAGGは数値データ型を処理しますか

  16. 16

    複数の値でOracleのLISTAGG関数を使用するにはどうすればよいですか?

  17. 17

    Oracleのlistaggからトップレコードを取得するにはどうすればよいですか?

  18. 18

    OracleでLISTAGGを使用した文字列フォーマット。一重引用符のエスケープ `` ''

  19. 19

    LISTAGG(Oracle)からのCSVの文字列を正しく整列する列に分割します

  20. 20

    クエリをOracleからSQLServerに変換し、ListAggを変換する必要があります

  21. 21

    Oracleで「withas」および「listagg」を使用するとエラーが発生しました

  22. 22

    OracleのlistaggとしてSQLサーバーを使用してリストで出力結果を選択する方法

  23. 23

    OracleのLISTAGG関数に類似したSparkDataframeの実装-グループ内で注文できません

  24. 24

    verticaのLISTAGG

  25. 25

    listaggでの問題

  26. 26

    LISTAGG奇妙な連結

  27. 27

    Oracle DBでLISTAGGを使用する場合、文字列からCHR(0)を削除するにはどうすればよいですか?

  28. 28

    Oracle 11g +の集約要素の数に応じてLISTAGG()の結果を変更するにはどうすればよいですか?

  29. 29

    groupbyのないlistagg関数

ホットタグ

アーカイブ