布尔参数控制行显示异常求助:选False时仅展示零值而非全部数据
解决布尔参数控制数据展示的问题
看起来你的问题出在查询语句的WHERE条件逻辑上,咱们来拆解一下怎么调整:
问题根源
你当前的WHERE fa.Num_Adjudicados = @AnunciosAdjudicados条件,在参数为False时,只会筛选出Num_Adjudicados=0(未中标)的行,而不是你想要的所有行。虽然参数为True时能正常筛选非零值,但最好把这个逻辑明确写进条件里,保证严谨性。
修正后的查询语句
把WHERE子句改成下面这样,就能完全匹配你的需求:
SELECT Adjudicado = IIF(fa.[Num_Adjudicados] = 1, 'Adjudicado', 'No Adjudicado'), fa.Val_Persupuesto as [Valor Presupuesto] FROM [dbo].[F_Anuncio] fa WHERE -- 当参数为True(已中标)时:筛选中标且预算非零的行 (@AnunciosAdjudicados = 1 AND fa.Num_Adjudicados = 1 AND fa.Val_Persupuesto <> 0) -- 当参数为False时:不限制任何条件,展示所有行 OR @AnunciosAdjudicados = 0
逻辑说明
- 当
@AnunciosAdjudicados=1(True):只会返回Num_Adjudicados=1且预算金额不等于0€的行,完全符合你的需求。 - 当
@AnunciosAdjudicados=0(False):OR条件直接生效,跳过前面的筛选规则,返回表中所有行——不管是否中标、预算是否为0。
这样调整后,就能解决你现在遇到的参数为False时仅显示零值行的问题啦。
内容的提问来源于stack exchange,提问作者nicoleor
相关产品推荐
相关产品推荐

