我正在做一個rdl報告,我有三個複選框,如果選中需要改變我的WHERE語句。如果沒有選中,結果只能按日期範圍匹配。如果選中一個或多個,則需要返回與變量相對應的字符串匹配的字段。SQL布爾值在哪裏站
WHERE
(EffectiveDate BETWEEN @StartDate AND @EndDate)
AND (((@IncludeSEWPrefix = 1 AND PrefixId = 'SEW') OR @IncludeSEWPrefix = 0)
AND ((@IncludePAWPrefix = 1 AND PrefixId = 'PAW') OR @IncludePAWPrefix = 0)
AND ((@IncludeRPLPrefix = 1 AND PrefixId = 'RPL') OR @IncludeRPLPrefix = 0))
我的代碼時沒有進行檢查,當一個被選中至今的作品,但是當一個以上的複選框已檢查返回任何內容。所以要嘗試修復此問題,我將代碼更改爲此
WHERE
(EffectiveDate BETWEEN @StartDate AND @EndDate)
AND ((((@IncludeSEWPrefix = 1 AND PrefixId = 'SEW') OR @IncludeSEWPrefix = 0)
OR ((@IncludePAWPrefix = 1 AND PrefixId = 'PAW') OR @IncludePAWPrefix = 0)
OR ((@IncludeRPLPrefix = 1 AND PrefixId = 'RPL') OR @IncludeRPLPrefix = 0)))
無論選擇什麼內容,都會導致返回所有行。有人能告訴我我要去哪裏嗎?
謝謝你的解決方案工作完美,你的解釋非常明確 – 2012-07-17 13:11:36