WITH sub AS (
SELECT region, category, COUNT(DISTINCT order_id) AS cnt
FROM records
GROUP BY region, category)
SELECT Region,
SUM(CASE WHEN category = 'Furniture' THEN cnt END) AS 'Furniture',
SUM(CASE WHEN category = 'Office Supplies' THEN cnt END) AS 'Office Supplies',
SUM(CASE WHEN category = 'Technology' THEN cnt END) AS 'Technology'
FROM sub
GROUP BY region
ORDER BY region ASC
☑️ point
+) 아래와 같은 풀이도 가능
SELECT region AS Region,
COUNT(DISTINCT CASE WHEN category = 'Furniture' THEN order_id ELSE NULL END) AS 'Furniture',
COUNT(DISTINCT CASE WHEN category = 'Office Supplies' THEN order_id ELSE NULL END) AS 'Office Supplies',
COUNT(DISTINCT CASE WHEN category = 'Technology' THEN order_id ELSE NULL END) AS 'Technology'
FROM records
GROUP BY region
ORDER BY region ASC