WITH t (hospital, city, region) AS (
SELECT 'ΠΠ£ΠΠ 3', 'ΠΠΎΡΠΊΠ²Π°', 'ΠΠΎΡΠΊΠΎΠ²ΡΠΊΠΈΠΉ' FROM dual
UNION ALL
SELECT 'Π¦ΠΠ Π£ΠΠ', 'ΠΠΎΡΠΊΠ²Π°', 'ΠΠΎΡΠΊΠΎΠ²ΡΠΊΠΈΠΉ' FROM dual
UNION ALL
SELECT 'ΠΠΎΠ»ΠΈΠΊΠ»ΠΈΠ½ΠΈΠΊΠ° β1', 'Π―ΡΠΎΡΠ»Π°Π²Π»Ρ', 'Π―ΡΠΎΡΠ»Π°Π²ΡΠΊΠΈΠΉ' FROM dual
)
SELECT CASE
WHEN GROUPING_ID(region,hospital,city) = 3 THEN t.region
ELSE t.hospital
END hospital,
t.city
FROM t
GROUP BY GROUPING SETS(t.region,(t.region,t.hospital,t.city))
ORDER BY t.region, GROUPING_ID(t.region,t.hospital,t.city) DESC, t.hospital, t.city