I created a view that has a distinct in the select clause.
When I try to select all the records with "select * from view" I get the following error:
ORA-01446: cannot select ROWID from view with DISTINCT, GROUP BY, etc.
I was searching why this happens and came to this:
You tried to create a view that included a ROWID in the SELECT statement as well as a clause such as DISTINCT or GROUP BY. This is not allowed. Reference
This is awkward because the select stament in the view does not selects the rowid and it isn't being used in any other clause (where, order, etc..)
Any idea on this?
I'm not able to post the query itself but i'm posting a look-a-like. Here it is:
SELECT DISTINCT t1.c1 TABLE1_C1,
t1.c2 TABLE1_C2,
t1.c3 TABLE1_C3,
t1.c4 TABLE1_C4,
t1.c4 TABLE1_C4,
t1.c5 TABLE1_C5,
t1.c6 TABLE1_C6,
t1.c7 TABLE1_C7,
t1.c8 TABLE1_C8,
t2.c1 TABLE2_C1,
t2.c2 TABLE2_C2,
t2.c3 TABLE2_C3,
t2.c4 TABLE2_C4,
t2.c5 TABLE2_C5,
t3.c1 TABLE3_C1,
t2.c6 TABLE2_C6,
t4.c1 TABLE4_C1,
t4.c2 TABLE4_C2,
t4.c3 TABLE4_C3
FROM table1 t1
LEFT JOIN table2 t2
ON t1.c1 = t2.c7
left JOIN table4 t4
ON t4.c4 = t2.c1
LEFT JOIN table3 t3
ON (t2.c1 = t3.c2
AND t2.c8 = t3.c3
AND t2.c9 = t3.c4)
WHERE (t2.cp5 = 0 or t2.cp5 is null)
AND (t2.c3 =
(SELECT MAX(c3)
FROM table2 s_t2
WHERE s_t2.c3 LIKE t2.c3
AND s_t2.c7 = t1.c1
) or t2.c3 is null)
If you use distinct or group by several rows can qualify the condition. So different executions would return different row id's and the other question if several rows qualify which one would you return?
This simply doesn't make sense
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With