Я хотел бы использовать оператор CASE в SELECT.
Я выбираю из таблицы пользователя и (как один атрибут), я также использую вложенный SQL:
SELECT
registrationDate,
(SELECT COUNT(*) FROM Articles WHERE userId = Users.userId) as articleNumber,
hobbies, ...
FROM USERS
а затем я хотел бы сделать оператор CASE, чтобы получить ранг пользователя (ранг зависит от articleNumber).
Я пробовал вот так:
SELECT
registrationDate,
(SELECT COUNT(*) FROM Articles WHERE Articles.userId = Users.userId) as articleNumber,
ranking =
CASE
WHEN articleNumber < 2 THEN 'Ama'
WHEN articleNumber < 5 THEN 'SemiAma'
WHEN articleNumber < 7 THEN 'Good'
WHEN articleNumber < 9 THEN 'Better'
WHEN articleNumber < 12 THEN 'Best'
ELSE 'Outstanding'
END,
hobbies, etc...
FROM USERS
Анализ не отображает ошибки, но когда я пытаюсь запустить его, я получаю сообщение об ошибке:
Msg 207, уровень 16, состояние 1, процедура GetUserList, строка XY
Недопустимое имя столбца 'articleNumber'.
CASE не "распознает" мой вложенный SELECT, я думаю.
Я помог себе с некоторыми другими решениями, такими как SQL Server 2008 - Операторы Case/If в разделе SELECT но ничего не работает.
Я также не нашел подобной проблемы с '<' и ' > '.
Любая помощь будет принята с благодарностью;)