Introduction
Use CASE in ORDER BY to sort data in a custom way based on conditions, not just simple column values.
SELECT column1, column2 FROM table_name ORDER BY CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE result_default END;
SELECT name, category FROM products ORDER BY CASE category WHEN 'Electronics' THEN 1 WHEN 'Clothing' THEN 2 ELSE 3 END;
SELECT employee_name, role FROM employees ORDER BY CASE WHEN role = 'Manager' THEN 1 WHEN role = 'Developer' THEN 2 ELSE 3 END;
CREATE TABLE tasks (id INT, task_name VARCHAR(50), priority VARCHAR(10)); INSERT INTO tasks VALUES (1, 'Fix bug', 'High'), (2, 'Write docs', 'Low'), (3, 'Code review', 'Medium'), (4, 'Deploy', 'High'); SELECT task_name, priority FROM tasks ORDER BY CASE priority WHEN 'High' THEN 1 WHEN 'Medium' THEN 2 WHEN 'Low' THEN 3 ELSE 4 END;
CASE statement do when used inside an ORDER BY clause in SQL?CASE inside an ORDER BY clause?CASE WHEN ... THEN ... ELSE ... END without extra keywords.Tasks with column priority having values 'High', 'Medium', 'Low', what will the query below return?SELECT priority FROM Tasks ORDER BY CASE priority WHEN 'High' THEN 1 WHEN 'Medium' THEN 2 ELSE 3 END;SELECT name FROM Employees ORDER BY CASE WHEN department = 'Sales' THEN 1 WHEN department = 'HR' THEN 2 ELSE 3;Pass the test and this pattern moves unknown