簡體   English   中英

Oracle SQL-在視圖的串聯列上使用listagg

[英]Oracle SQL - using listagg on a concatenated column from a view

我創建了一個帶有串聯列的視圖。

我在各個列上成功使用了listagg,但是當我嘗試在listagg中使用串聯的列時,我收到了一個錯誤消息,它是無效的標識符。

有沒有辦法以listagg格式組合require和message_desc列?

我的查詢如下:

select a.ID,
a.NAME,
a.YEAR,
count (a.linenum) as count_missing_docs,
listagg(a.requirement, ',') within group (order by a.requirement) as "reqs",
listagg(a.MESSAGE_DESC, '...')within group (order by a.MESSAGE_DESC)as "msgs",
listagg(a.combo,' ') within group (order by a.combo) as "all_info"
from
(SELECT
rownum "LINENUM",
FTR.ID,
FTR.NAME,
FTR.YEAR,
FTR.REQUIREMENT,
FTR.STATUS,
FTR.STATUS_IND,
FTR.MESSAGE_DESC,
FTR.REQUIREMENT||'-'||FTR.MESSAGE_DESC||'...' as "combo"
from TRACKING_REQUIREMENT FTR
where FTR.year = '1617'
and FTR.status = 'R'
and FTR.satisfied_ind = 'N'
order by 2 , 1 asc) A
group by
a.ID,
a.NAME,
a.YEAR
order by 1

問題實際上是,您一直在標識符周圍加上雙引號-這告訴oracle您需要區分大小寫的標識符,但是隨后您要使用不區分大小寫的標識符(不使用雙引號)來引用它(Oracle似乎會解釋內部為ALL大寫)。

只要刪除所有雙引號,您的查詢就可以正常工作。

暫無
暫無

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

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