2017-08-09 4 views
0

Ich erstellte eine Ansicht mit einer verketteten Spalte.Oracle SQL - mit Listagg auf einer verketteten Spalte aus einer Sicht

Ich habe erfolgreich Listagg für die einzelnen Spalten verwendet, aber als ich versuchte, die verkettete Spalte in der Listagg zu verwenden, erhielt ich den Fehler, dass es eine ungültige Kennung war.

Gibt es eine Möglichkeit, die Spalten requirement und message_desc in einem Listagg-Format zu kombinieren?

meine Frage lautet wie folgt:

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 

Antwort

3

Das Problem eigentlich nur ist, dass Sie halten setzen doppelte Anführungszeichen um Ihre Identifikatoren - das Orakel sagt, dass Sie ein Fall, dass sensible Kennung, aber dann bist du ohne Angabe von Anführungszeichen, wobei eine case-insensitive Kennung verwendet wird (die Oracle intern als ALLES zu interpretieren scheint).

Entfernen Sie einfach alle Anführungszeichen und Ihre Abfrage sollte gut funktionieren.

Verwandte Themen