【问题标题】:Using LISTAGG/XMLAGG not working as expected使用 LISTAGG/XMLAGG 未按预期工作
【发布时间】:2021-06-04 19:59:47
【问题描述】:

LISTAGG 正在使用 < 4000 但不是 > 4000。当我尝试提供XMLAGG 而不是LISTAGG 时,它不起作用。

SELECT LISTAGG( 
    CONCAT(
        CONCAT( 
            ( 
                SELECT CONCAT( USER_FIRST_NM, CONCAT(',', USER_LAST_NM) )
                FROM USER_TABLE
                WHERE USER_LOGONID = USER_ID
            ), 
            CONCAT( ' - ', TO_CHAR(CREATED_DATE, 'DD-MON-YY HH:MI AM'))
        ),
        CONCAT(chr(10), NOTES) 
    ),
    chr(10)
) WITHIN GROUP (
    ORDER BY 
    MOBILES,
    created_date ASC
) NOTES
FROM MOBILES_notes
WHERE MOBILES_ELEMENT = :p1
ORDER BY CREATED_DATE

【问题讨论】:

标签: sql oracle listagg


【解决方案1】:

XMLAGG()XMLELEMENT() 函数可能用于大数据,例如

SELECT RTRIM(DBMS_XMLGEN.CONVERT(
       XMLAGG(
                XMLELEMENT(e, 
                CONCAT(CONCAT((SELECT CONCAT(user_first_nm,
                                           CONCAT(',', user_last_nm))
                               FROM USER_TABLE
                              WHERE user_logonid = user_id),
                             CONCAT(' - ',
                                    TO_CHAR(created_date,
                                            'DD-MON-YY HH:MI AM'))),
                      CONCAT(CHR(10), NOTES))||CHR(10)                
                ) ORDER BY mobiles, created_date
               ).EXTRACT('//text()').GETCLOBVAL() ,1),',') AS notes
  FROM mobiles_notes
 WHERE mobiles_element = :p1
 ORDER BY created_date

【讨论】:

  • WITHIN GROUP (ORDER BY MOBILES, created_date ASC) NOTES --->如果我在查询中保留此条件,则在您提到的查询中缺少此条件,我得到错误
  • 嗨@nandini,我已经添加了order by的选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 2016-09-16
  • 2014-08-13
  • 2021-06-04
  • 2022-01-24
  • 2015-05-11
  • 2020-05-15
相关资源
最近更新 更多