Přišel jsem sem a snažil jsem se vyřešit podobnou situaci, takže se mi zdá, že se tento druh problému stále objevuje.
V mém případě se podařilo vyhnout se jakékoli transformaci optimalizátoru.
Použil jsem nápovědu NO_QUERY_TRANSFORMATION na "intoed" SELECT a chyba zmizela.
V případě této otázky bych ji měl přepsat jako:
INSERT INTO MasterRecords
(BatchRecordRecordID, SourceID, BatchID)
SELECT /*+NO_QUERY_TRANSFORMATION*/ RecordID, SourceID, BatchID
FROM (
SELECT RecordID, BatchID, 101 AS SourceID
FROM BatchRecords
WHERE BatchID = 150
GROUP BY RecordID, BatchID
) BR