2016-11-06 11 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

はい、IFの代わりにユーザーCASE(この例では '@ Dept'の値に関係なく3つの評価があるため)です。 – 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 
関連する問題