declare @BranchId int
declare @PaymentDate date
set @DebtIsPayed =null
set @BranchId =3
set @PaymentDate='2013-01-01'
select og.StudentId, og.Name,sb.BranchName,bt.DeptValue,DebtIsPayed,PaymentDate ,bt.DebtDescriptionName
from StudentPayment od
left outer join DebtDescription bt on od.DebtDescriptionId= bt.DebtDescriptionId
left outer join Student og on od.StudentId= og.StudentId
left outer join Branch sb on sb.BranchId = og.BranchId
where od.DebtIsPayed=@DebtIsPayed and og.BranchId=@BranchId
このようなクエリがあります。変数はフォーム要素(asp.netアプリ)から取得されます。私がしたいのは、これらの宣言された変数がnullの場合、すべての学生の支払いをリストし、変数が値(@DebtIsPayed = 1など)に設定されている場合、ブランチを考慮せずにすべての学生をリストすることですが、branchIdも設定されている場合はリストしますこのブランチのすべての学生と @DebtIsPayed=1。値の日付(@PaymentDate)も設定されている場合、この日付以降に支払われたすべてのレコードをリストします。大文字と小文字を区別して実行できると思います。すべてのバリエーションについて、クエリを作成できますが、より良い方法または簡単な方法はありますかそれを行う。