Let\'s say I have the following table with hundreds of toys of various colors...
--------------------------- ITEM | COST | COLOR ----------------------
ROW_NUMBER() could be used:
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY COLOR ORDER BY COST) AS RN FROM TOYS WHERE COLOR IN ('YELLOW', 'WHITE', 'BLUE')) sub WHERE RN <= CASE COLOR WHEN 'YELLOW' THEN 1 WHEN 'WHITE' THEN 3 WHEN 'BLUE' THEN 2 END