簡體   English   中英

Oracle SQL中的ListAgg(基於2個表)

[英]ListAgg in Oracle sql (based on 2 tables)

我的解釋如下。

BRDB.EXPORT SHIPMENT (table)

 SHPMNT_REF  | SHIPMENT_TYPE
    867      | EHH
    868      | EHH
    869      | EHH

BRDB.EVENT_CODE (table)

 FILE_NO  | REMARKS   EVENT_CODE
 867      | TEST0      SIR
 867      | TEST1      SIR
 867      | TEST2      SIR
 867      | TEST3      SIR
 868      | TEST4      EEO

I want my report is showing as below

  FILE NO    |  REMARKS
     123     |  TEST0,TEST1,TEST2
     456     |  TEST3

運行這些代碼“從僅允許一列的子查詢返回多列”時收到錯誤。

select min(X.SHPMNT_REF) as "House B/L #",
       listagg(case when SIR = 1 then X.REMARKS end, ',') within group (order by X.SHPMNT_REF) as "REMARKS(from SIR Event)"
FROM   (select ES.SHPMNT_REF,
               (select EE.REMARKS,
                       row_number() over (order by EE.FILE_NO)
                FROM   BRDB.EXPORT_EVENT EE
                where  EE.FILE_NO = ES.SHPMNT_REF
                and    EE.EVENT_CODE = 'SIR') as SIR
        from   BRDB.EXPORT_SHIPMENT ES)X
GROUP BY X.SHPMNT_REF

假設您輸入的示例輸入有誤,此簡單查詢應該對您有用

SELECT file_no, 
    LISTAGG(remarks, ',') WITHIN GROUP (ORDER BY remarks) AS remarks
FROM brdb.event_code
WHERE event_code = 'SIR'
GROUP BY file_no
ORDER BY file_no;

您的問題有以下問題,首先是第一部分EXPORT_SHIPMENT中的表名(我假設其中有下划線),而EVENT_CODE與您提供的代碼段不匹配。 您是否還在嘗試將行號合並到“文件號”字段中? 很難確定您要尋找什么。

對於原始錯誤,Oracle相關子查詢不支持多列。 這是導致該錯誤的原因,您可以返回ee.remarksrow_number() ,而不是兩者都返回。

select EE.REMARKS,
row_number() over (order by EE.FILE_NO)
from   BRDB.EXPORT_EVENT EE
where  EE.FILE_NO = ES.SHPMNT_REF
and    EE.EVENT_CODE = 'SIR'

對於您想要的東西,我最大的猜想是這樣的,請注意,我正在加入表,而不嘗試子查詢。

select X.FILE_NO 
       ,listagg(X.REMARKS || ',') within group (order by X.SHPMNT_REF) 
       ,listagg(X.ROW_NUM) within group (order by X.SHPMNT_REF) 

FROM  
(
    select EE.FILE_NO,
           ES.SHPMNT_REF,
           EE.REMARKS,
           row_number() over (order by EE.FILE_NO) as ROW_NUM
    FROM   EVENT_CODE       EE
    JOIN   EXPORT_SHIPMENT  ES
      ON   EE.FILE_NO = ES.SHPMNT_REF
    AND    EE.EVENT_CODE = 'SIR'
) X
group by X.FILE_NO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM