查询中的多个IF

时间:2016-11-06 08:12:19

标签: sql sql-server tsql

我正在尝试编写以下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()

有没有更好的方法来编写此查询?

2 个答案:

答案 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)

如果无法访问表格函数的基础对象,答案是“否”' 它可以在单个查询中编写,但它没有附加值。