How to fetch Below Output Using SQL Query in Oracle
Scenario:
suppose that in a Table named Team contains 4 records, we need to schedule a match between each team vs opposite team:
x
Team
----
India
Pakistan
Srilanka
Australia
Output :
----
India VS Pakistan
India VS Srilanka
India VS Australia
Pakistan VS Srilanka
Pakistan VS Australia
Srilanka VS Australia
Advertisement
Answer
WITH teams
AS (SELECT 'India' team
FROM dual
UNION ALL
SELECT 'Pakistan' team
FROM dual
UNION ALL
SELECT 'Srilanka' team
FROM dual
UNION ALL
SELECT 'Australia' team
FROM dual
)
SELECT DISTINCT CASE
WHEN t1.team >= t2.team THEN t2.team
ELSE t1.team
END || ' VS '||
CASE
WHEN t1.team >= t2.team THEN t1.team
ELSE t2.team
END Matches
FROM teams t1
cross join teams t2
WHERE t1.team != t2.team
ORDER BY Matches;
Output:
Australia VS India
Australia VS Pakistan
Australia VS Srilanka
India VS Pakistan
India VS Srilanka
Pakistan VS Srilanka
You may use a different combinations within the CASE
block