Valid GROUP BY query doesn't work when combined with INSERT INTO on Oracle
I arrived here trying to solve a similar situation so it seems to me that this kind of problem still appears.
In my case, avoiding any optimizer transformation, did the trick.
I applied a NO_QUERY_TRANSFORMATION hint to the "intoed" SELECT statement and the error disappeared.
In the case of this question, I should rewrite it as:
INSERT INTO MasterRecords (BatchRecordRecordID, SourceID, BatchID)SELECT /*+NO_QUERY_TRANSFORMATION*/ RecordID, SourceID, BatchIDFROM ( SELECT RecordID, BatchID, 101 AS SourceID FROM BatchRecords WHERE BatchID = 150 GROUP BY RecordID, BatchID) BR
Wonder if it's an order of execution problem... does it work if you use a CTE?CTE must first materialize thus resolve the group by...
Insert INTO MasterRecords (BatchRecordRecordID, SourceID, BatchID) WITH BR AS ( SELECT RecordID, 101 AS SourceID, 150 AS BatchID FROM BatchRecords GROUP BY RecordID, 101,150) Select RecordID, SourceID, BatchID FROM BR
or... why the group by and where clause in the first place doesn't seem to be doing anything since recordID isn't an aggregate and isn't part of the group by...
Insert into masterRecords (batchrecordRecordID, SourceID, BatchID)SELECT recordID, 101, 150 from batchRecords