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 应用程序)。我想做的是,如果那些声明的变量为空,列出所有学生付款,如果变量设置为 a 值(例如@DebtIsPayed=1),列出所有学生而不考虑他们的分支。但如果它也设置了 branchId,列出这个分支的所有学生和@DebtIsPayed=1。如果还设置了起息日(@PaymentDate),请列出在此日期之后支付的所有记录,我想我可以用案例来完成,对于所有变化,我可以创建一个查询,但是有没有更好或更简单的方法去做。