Использование If else или Case из More Table в SQL Server

Мне нужно выбрать все из Log Таблица и импорт данных, когда дело

Если UserGrade =1, это Admin User, и мне нужно выбрать Admin Name по Log.User

Если UserGrade =2, это пользователь учителя, и мне нужно выбрать имя учителя по Log.User

Если UserGrade =3, это пользователь ученика, и мне нужно выбрать имя ученика по Log.User

Я пытаюсь это

select L.[UserID],L.[UserGrade],L.[Operation],L.[OpDate],

case 

when  L.[UserGrade]=2 then (select teacherNAME from Teacher ,[Log] where teacherID=[Log].[UserGrade] )

when  L.[UserGrade]=1 then (select [Adm_Name] from Administrator ,[Log] where [Adm_ID]=[Log].[UserGrade] )

when  L.[UserGrade]=3 then (select [studentNAME] from student ,[Log] where[studentID]=[Log].[UserGrade] )

end
from [Log] L ,Teacher , Administrator  ,student

2 ответа

Решение

Это ваш точный запрос. Таблицы с запятыми - это старый стиль, избегайте их и используйте JOIN. Также используйте ELSE в CASE

SELECT L.[UserID], L.[UserGrade], L.[Operation], L.[OpDate],
    CASE L.[UserGrade]
    WHEN 2 THEN T.[teacherNAME] 
    WHEN 1 THEN A.[Adm_Name]
    WHEN 3 THEN S.[studentNAME]
    ELSE '' END [Name]
FROM [Log] L 
LEFT JOIN Teacher T ON T.[teacherID] = L.[UserGrade]
LEFT JOIN Administrator A ON A.[Adm_ID] = L.[UserGrade]
LEFT JOIN student S ON S.[studentID] = L.[UserGrade]

Оценивает список условий и возвращает одно из нескольких возможных выражений результата.

Выражение CASE имеет два формата:

  • Простое выражение CASE сравнивает выражение с набором простых выражений для определения результата.

  • Найденное выражение CASE оценивает набор логических выражений для определения результата. Оба формата поддерживают необязательный аргумент ELSE.

CASE может использоваться в любом выражении или предложении, которое допускает допустимое выражение. Например, вы можете использовать CASE в таких операторах, как SELECT, UPDATE, DELETE и SET, а также в таких предложениях, как select_list, IN, WHERE, ORDER BY и HAVING.

Вы должны проверить эту ссылку

Другие вопросы по тегам