0

従業員 ID の値または従業員名の値でデータを選択できるようにするというユーザー リクエストがありました。どちらも要求されない場合は、すべての従業員をプルします。

私の最初の衝動は、次の 2 つの変数を作成することでした@EmpID@Name

それから

select a,b,c,d,e
where
(
    c between date1 and date 2
    and
    d > 0
)
and
(
    a in (@EmpID)
    or
    b = @Name
)

@Empidまたはの値を指定するとうまくいきます@Name

私が理解できないのは、 if @EmpID is nulland を全員に返す方法@Name is nullです。

4

1 に答える 1

1

節に次のORステートメントを追加します。WHERE

and
    (
        (a = @EmpID)
        or
        (b = @Name)
        or
        (@EmpID IS NULL AND @Name IS NULL)
    )

@EmpIDとの両方@NameNULLの場合、すべての従業員が返されます。WHEREこの節は次の点に注意してください。

(
    c between date1 and date 2
    and
    d > 0
)

選択した従業員には引き続き適用されます。

于 2012-07-19T21:15:50.360 に答える