You can use Oracle's UNPIVOT Clause
SELECT *
FROM AA
UNPIVOT (
value FOR name IN (x AS 'x', y AS 'y', z AS 'z')
);
Will yield the result
name value
---- -----
x 10
y 20
z 30
Can it be generalized for more columns? Since the name of the columns needs to be known in advance, you cannot make it automatically consider additional columns, but of course, you can add more columns manually. Example also having other columns than the value columns:
CREATE TABLE AA (
position NVARCHAR2(50),
x NUMBER(10),
y NUMBER(10),
z NUMBER(10),
t NUMBER(10)
);
INSERT INTO AA (position, x, y, z, t) VALUES ('pos 1', 10, 20, 30, 1);
INSERT INTO AA (position, x, y, z, t) VALUES ('pos 2', 11, 22, 33, 2);
INSERT INTO AA (position, x, y, z, t)