У меня есть этот запрос.Сложность в настройке запроса с использованием «CASE WHEN»
логика выбора является, существует ли параметр @USER_NAME
в течение 3 следующих таблицах в соответствующих столбцах:
MODEL_RESPONSIBLE MR> MR.USER_NAME
RESPONSIBLE_PLANT_MODEL> RPM.USER_NAME_MPR
RESPONSIBLE_AREA_MODEL> RAM.USER_NAME_AM
DECLARE
@USER_NAME varchar(max) = 'lorem',
@PROFILE_USER varchar(max) = null;
SELECT @USER_NAME, UserProfile =
CASE @USER_NAME
WHEN IN(RAM.USER_NAME_AM) THEN @PROFILE_USER = 'PROFILE 01'
WHEN IN(RPM.USER_NAME_MPR) THEN @PROFILE_USER = 'PROFILE 02'
WHEN IN(MR.USER_NAME) THEN @PROFILE_USER = MR.PROFILE_NAME
ELSE @PROFILE_USER = ''
END,
UserProfile
FROM MODELO M
INNER JOIN MODEL_RESPONSIBLE MR ON MR.ID_MODEL = M.ID_MODEL
INNER JOIN RESPONSIBLE_PLANT_MODEL RPM ON RPM.ID_MODEL = M.ID_MODEL
INNER JOIN RESPONSIBLE_AREA_MODEL RAM ON RAM.ID_MODEL = M.ID_MODEL
Тест не работал должным образом.
Как лучше всего собрать запрос, это было бы с CASE или IF?
Как правильно присвоить значение @PROFILE_USER?
ERROR: Incorrect syntax near the keyword 'IN'.
Отметьте используемые dbms, некоторые не ANSI SQL там. – jarlh
В качестве примечания вы можете исправить эту конкретную ошибку, просто удалив 'IN' после каждого' WHEN'. Затем вы получите еще одну ошибку, но я не уверен, какой из них. Если бы я угадал, это было бы связано с '=' после каждого 'THEN'. –
@ GordonLinoff Точно. Исключение из '=' –