I have a table with two columns “COL_A” and “COL_B” which I create by inserting one row at a time:
COL_A COL_B
20200330 49
20200413 31
20200420 19
20200511 99
20190318 73
20190401 86
I would like at the end of the program to have the table ordered by COL_A. I thought this coud be possible by running an ALTER TABLE
command after I filled the table so I tried with:
PROC SQL;
CONNECT TO ORACLE (USER=XXX ORAPW=XXX PATH=XXX);
EXECUTE (
ALTER TABLE SCHEMA.TABLE
ORDER BY COL_A
) BY ORACLE;
DISCONNECT FROM ORACLE;
QUIT;
But I get
ERROR: ORACLE execute error: ORA-01735: opción ALTER TABLE no válida.
Of course I could create another table with the data of this original table ordered by COL_A, but I would like to know if I can do it in place.
I am using ORACLE SQL in SAS.
Advertisement
Answer
In SQL, tables represent unordered sets. You can only order the table when you are querying the data:
select t.*
from schema.table t
order by t.col_a;
If you are concerned about performance, you can add an index on (col_a)
— so the index is used instead of actually sorting.
Note: The lack of ordering is also true of views. If you want an ordered result set, you need to use order by
in the query.