使用 SQL 服务器中更多 Table 的 If else 或 Case

Using If else Or Case from More Table In SQL Server

我需要 select 全部来自 Log Table 并在 Case

时导入数据

如果 UserGrade =1 这是管理员用户,我需要 select 管理员名称 Log.User

如果 UserGrade =2 这是教师用户,我需要 select 教师姓名 Log.User

如果 UserGrade =3 这是学生用户,我需要 select 学生姓名 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

这是您的微调查询。带逗号的表是旧样式,避免使用它们并使用 JOIN。在 CASE

中也使用 ELSE
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]

计算条件列表和returns多个可能的结果表达式之一。

CASE 表达式有两种格式:

  • 简单的 CASE 表达式将一个表达式与一组简单的 表达式来确定结果。

  • 搜索到的CASE表达式 计算一组布尔表达式以确定结果。两个都 格式支持可选的 ELSE 参数。

CASE 可以用在任何允许有效表达式的语句或子句中。例如,您可以在 SELECT、UPDATE、DELETE 和 SET 等语句中以及 select_list、IN、WHERE、ORDER BY 和 HAVING 等子句中使用 CASE。

你应该检查这个Link