Het is een fout. Een /*+ NO_MERGE */
. toevoegen hint naar de tweede inline-weergave in het laatste voorbeeld zal de verwachte resultaten genereren. Zie deze SQL Fiddle
bijvoorbeeld. Ongeacht de zoekopdracht, die hint mag de resultaten nooit veranderen. Er zijn een aantal andere schijnbaar ongerelateerde wijzigingen die u kunt aanbrengen die de juiste resultaten opleveren, zoals het verwijderen van enkele kolommen of het toevoegen van een ongebruikt ROWNUM
in het midden.
Oracle herschrijft uw query om deze te optimaliseren, maar doet iets verkeerd. Je zou waarschijnlijk wat meer informatie kunnen krijgen door de zoekopdracht te traceren, maar ik betwijfel of je het probleem echt kunt oplossen. Werk er voorlopig omheen en dien een serviceverzoek in bij Oracle zodat ze een bug kunnen maken en deze uiteindelijk kunnen oplossen.