2017-08-09 4 views
0

連結列を含むビューを作成しました。Oracle SQL - ビューの連結列にlistaggを使用

listaggを個々の列に正常に使用しましたが、listaggで連結列を使用しようとしたときに、無効な識別子であるというエラーが表示されました。

要件とmessage_desc列をlistagg形式で結合する方法はありますか?

次のように私のクエリは次のとおりです。

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 

答えて

3

問題は、あなたの識別子を二重引用符を入れておくだけのこと実際にある - これはあなたが大文字と小文字が区別識別子をOracleに伝えられますが、その後、あなたはしています大文字小文字を区別しない識別子(Oracleは内部的に大文字と解釈されるようです)を使用して二重引用符を使用しないで参照してください。

すべての二重引用符を取り除くだけで、クエリは正常に動作します。

関連する問題