Вы можете определить функцию в Oracle для вычисления наибольшего общего делителя ( взято отсюда ):
CREATE FUNCTION gcd (x INTEGER, y INTEGER) RETURN INTEGER AS
ans INTEGER;
BEGIN
IF (y <= x) AND (x MOD y = 0) THEN
ans := y;
ELSIF x < y THEN
ans := gcd(y, x); -- Recursive call
ELSE
ans := gcd(y, x MOD y); -- Recursive call
END IF;
RETURN ans;
END;
А затем используйте эту функцию в SQL для объединения строки дроби:
SELECT CAST(TRUNC(A / GCD(A, B)) AS VARCHAR2(10))
|| ' / ' ||
CAST(TRUNC(B / GCD(A, B)) AS VARCHAR2(10)) AS FRACTION FROM TABLE