WITH cte AS (
SELECT item_id,
MAX(CASE WHEN vendor_id = 2
THEN price
END) AS Bandung,
MAX(CASE WHEN vendor_id = 3
THEN price
END) AS `Vendor Bandung`,
MAX(CASE WHEN vendor_id = 4
THEN price
END) AS Jakarta,
MIN(price) MinPrice
FROM transactions
GROUP BY item_id
)
SELECT *,
CASE MinPrice WHEN Bandung THEN 'Bandung'
WHEN `Vendor Bandung` THEN 'Vendor Bandung'
WHEN Jakarta THEN 'Jakarta'
ELSE 'unknown'
END Area
FROM cte
Для древних версий:
SELECT *,
CASE MinPrice WHEN Bandung THEN 'Bandung'
WHEN `Vendor Bandung` THEN 'Vendor Bandung'
WHEN Jakarta THEN 'Jakarta'
ELSE 'unknown'
END Area
FROM
(
SELECT item_id,
MAX(CASE WHEN vendor_id = 2
THEN price
END) AS Bandung,
MAX(CASE WHEN vendor_id = 3
THEN price
END) AS `Vendor Bandung`,
MAX(CASE WHEN vendor_id = 4
THEN price
END) AS Jakarta,
MIN(price) MinPrice
FROM transactions
GROUP BY item_id
) cte