Создание отдельной таблицы и JOIN определенно является более чистым способом написания этого кода. Что произойдет, например, если вы захотите написать другой запрос с такими же отображениями? Вы должны будете скопировать оператор CASE в новый запрос, и дублирование копирования будет плохим. Что произойдет, если вам нужно добавить новое активное состояние?
С точки зрения производительности и JOIN, и CASE должны быть довольно дешевыми. CASE может быть немного более производительным из-за короткого замыкания оценки и нескольких случаев, но JOIN, на мой взгляд, является более чистым и гибким и более SQL-EY решением.