Ich arbeite an Oracle 11g und ich versuche, eine Abfrage zu schreiben, fügt ‚?‘ für alle fehlenden Monate zwischen 2 Daten. Das kann ich erreichen. aber jetzt möchte ich alle Datensätze einer bestimmten Spalte in einem einzigen Datensatz zusammenzustellen. Ich habe LISTAGG Funktion verwendet, um dies zu erreichen, aber ich bin eine Fehlermeldung „ungültige Kennung“ für die Spalte innerhalb LISTAGG Funktion bekommen. Hier ist mein Code: -Oracle 11g LISTAGG Funktion mit mehrere Unterabfrage
Select facilitynumber, LISTAGG(facilitystatus, '') WITHIN GROUP (ORDER BY null) "Profile" FROM ( WITH allmonths AS ( SELECT to_date(level, 'MM') AS allmnths FROM dual CONNECT BY LEVEL BETWEEN '01' AND '05' ), months AS ( SELECT * FROM ( SELECT ccds.facilitynumber,ccds.facilitystatus, dsub.filecreationdate as FacilityStatusDate, dsub.submissiondate, ROW_NUMBER() OVER (partition by ccds.facilitynumber,extract(month from dsub.submissiondate) order by dsub.submissiondate DESC) r FROM ccdssubmissions ccds INNER JOIN datasubmission dsub ON ccds.datasubmissionid = dsub.datasubmissionid INNER JOIN datasupplier dsup ON dsub.datasupplierid = dsup.datasupplierid WHERE ccds.matchedcompanynumber = 'TEST9239' ORDER BY dsub.submissiondate DESC ) where r = 1) SELECT allmnths, CASE WHEN facilitystatus IS NULL THEN '?' ELSE facilitystatus END AS "facilitystatus", submissiondate, facilitynumber FROM allmonths LEFT OUTER JOIN months ON extract(month from allmonths.allmnths) = extract(month from months.submissiondate) order by allmnths ) GROUP BY facilitynumber;
ich Fehler konfrontiert bin in der 2. Zeile selbst. Meine Unterabfrage dh Abfrage von "MIT" Starten welche Ergebnisse wie folgt: -
ALLMNTHS| facilitystatus | submissiondate | facilitynumber
--------- | --------------- | --------------- | ---------------
01-JAN-16 | U | 23-JAN-16 | FAC01
01-FEB-16 | ? | null | null
01-MAR-16 | 1 |05-MAR-16 | FAC01
nun die LISTAGG mit (facilitystatus, ''), möchte ich mein Ergebnis sein ->
Profile| facilitynumber
U?1 | FAC01
Aber , Oracle kann die Spalte "facilitystatus" nicht erkennen und kann daher nicht das gewünschte Ergebnis erzielen.
Jede Hilfe würde sehr geschätzt werden.
Dank
bei äußeren Abfrage Sie haben 'GROUP BY Einrichtungsnummer', das ist t er Grund, dass Sie diesen Fehler bekommen. Gruppe entfernen nach und Zeilen für letzten Monat erhalten, es könnte funktionieren. –
Nein. Gleicher Fehler. – Anuja