Reporting services 具有允许null的第二个参数的SSRS报告不工作

Reporting services 具有允许null的第二个参数的SSRS报告不工作,reporting-services,isnull,Reporting Services,Isnull,我有一个包含两个日期参数和两个参数的报告:@ConstitID和@BatchID,这两个参数都允许Null WHERE (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number)) AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd) AND (p_memb_fee_batch_payment.co

我有一个包含两个日期参数和两个参数的报告:
@ConstitID
@BatchID
,这两个参数都允许
Null

WHERE (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number))
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd)
AND (p_memb_fee_batch_payment.constit_id = @ConstitID)
AND (p_memb_fee_batch_payment.batch_id = @BatchID) OR (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number))
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd)
AND (@ConstitID IS NULL) OR (p_memb_fee_batch_payment.constit_id IS NULL)
AND (p_memb_fee_batch_payment.batch_id IS NULL) OR (@BatchID IS NULL)
ORDER BY p_memb_fee_batch_pmt_dst.fee_gl_number
在我添加第二个参数
@BatchID
之前,报表一直按预期工作

问:有人能解释一下我在下面的代码中遗漏了什么吗?我希望添加允许
Null
的附加参数,并且需要清楚地了解如何添加允许
Null
的附加参数

WHERE (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number))
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd)
AND (p_memb_fee_batch_payment.constit_id = @ConstitID)
AND (p_memb_fee_batch_payment.batch_id = @BatchID) OR (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number))
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd)
AND (@ConstitID IS NULL) OR (p_memb_fee_batch_payment.constit_id IS NULL)
AND (p_memb_fee_batch_payment.batch_id IS NULL) OR (@BatchID IS NULL)
ORDER BY p_memb_fee_batch_pmt_dst.fee_gl_number

实际上,我可以通过删除我在SSRS中基于参数@BatchID和@ConstitID设置的2个过滤器来解决这个问题。然后,我整理了代码如下,报告工作如预期。(我试图先将此作为评论发布,因为我想知道是否有更有效的编码解决方案

WHERE (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number))
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart    
AND @TransactionDateEnd)
AND (p_memb_fee_batch_payment.constit_id = @ConstitID)
AND (p_memb_fee_batch_payment.batch_id = @BatchID) OR (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number))
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN  @TransactionDateStart AND @TransactionDateEnd) 
AND (p_memb_fee_batch_payment.batch_id = @BatchID)
AND (@ConstitID IS NULL) OR (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number))
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd)
AND (p_memb_fee_batch_payment.constit_id = @ConstitID)
AND (@BatchID IS NULL) OR (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number))
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd)
AND (@ConstitID IS NULL)
AND (@BatchID IS NULL)
ORDER BY p_memb_fee_batch_pmt_dst.fee_gl_number