Sql server 在SQL Server中使用If-else或Case from-More表
我需要从Sql server 在SQL Server中使用If-else或Case from-More表,sql-server,if-statement,case-statement,Sql Server,If Statement,Case Statement,我需要从Log表中选择全部,并在需要时导入数据 如果UserGrade=1,这是管理员用户,我需要通过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 (s
Log
表中选择全部,并在需要时导入数据
如果UserGrade=1,这是管理员用户,我需要通过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
这是您经过微调的查询。带逗号的表是旧样式,请避免使用逗号,并使用JOIN。在
案例中也使用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]
计算条件列表并返回多个可能的结果表达式之一
大小写表达式有两种格式:
- 简单大小写表达式将表达式与一组简单大小写进行比较
表达式来确定结果
- 搜索的大小写表达式
计算一组布尔表达式以确定结果。二者都
格式支持可选的ELSE参数
CASE可用于任何允许有效表达式的语句或子句中。例如,您可以在SELECT、UPDATE、DELETE和SET等语句中以及SELECT_list、in、WHERE、ORDER BY和HAVING等子句中使用CASE
你应该检查一下这个谢谢你。我的问题解决了