2016-11-06 28 views
-1

我想寫下面的SQL查詢,我必須爲不同的輸入選擇不同的函數。這些函數在檢查@Dept參數後返回每個部門的員工數量。在查詢中的多個IF

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

是的,用戶CASE而不是IF(因爲在你的例子中有三個評估,不管@Dept的值是什麼)。 – FDavidov

+0

你有權訪問這些表函數的基表嗎? –

+0

不,我只能使用這些函數來訪問表。 –

回答

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