我正在尝试编写以下SQL查询,我必须为不同的输入选择不同的函数。检查@Dept参数后,这些函数返回每个部门的员工数。
DECLARE @Dept varchar(10)='IT'
IF @Dept='IT'
Select count(Employees) from dbo.ITDept()
IF @Dept='HR'
Select count(Employees) from dbo.HRDept()
IF @Dept='Accounts'
Select count(Employees) from dbo.AccountsDept()
有没有更好的方法来编写此查询?
答案 0 :(得分:1)
我认为您尝试将其用作查询中的字段。你可以用这个
来处理它Declare @dept varchar(10)
SELECT CASE WHEN @dept='IT' THEN
(Select
count(Employees) from dbo.ITDept())
WHEN @dept='IT' THEN (Select count(Employees) from dbo.HRDept())
WHEN @dept='IT' THEN (Select count(Employees) from dbo.AccountsDept())
ELSE (Select count(Employees) from dbo.ITDept())
END
答案 1 :(得分:0)
如果无法访问表格函数的基础对象,答案是“否”' 它可以在单个查询中编写,但它没有附加值。