1
我在SSRS中遇到了一些麻煩,我認爲這應該是非常基本的。我已經看到了有關IIF聲明和其他內容的一些答案,但沒有完全解決這個問題。使用IF語句的條件WHERE子句SSRS 2005
我是SSRS的新手,所以我不確定在數據部分中使用PLSQL可以使用哪些代碼/語法。
我想要做的是有一個基於參數是否爲null的if語句。我嘗試了各種語法,但它一直在拋出錯誤。有什麼建議麼?
喜歡的東西:
IF (:start_date IS NULL) THEN
SELECT wo.wonum, wo.worktype, wo.description wo_description, wo.targcompdate, wo.assetnum,
s.siteid, s.description s_description,
round((wo.targcompdate - sysdate), 0) DaysTillDue
FROM workorder wo
INNER JOIN site s on wo.siteid = s.siteid
WHERE
(wo.targcompdate - sysdate) >= :Low_Day
and (wo.targcompdate - sysdate) <= :High_Day
and wo.siteid = :site_param
and wo.worktype = :worktype_param;
ELSE
SELECT wo.wonum, wo.worktype, wo.description wo_description, wo.targcompdate, wo.assetnum,
s.siteid, s.description s_description,
round((wo.targcompdate - sysdate), 0) DaysTillDue
FROM workorder wo
INNER JOIN site s on wo.siteid = s.siteid
WHERE
(wo.targcompdate - sysdate) >= :Low_Day
and (wo.targcompdate - sysdate) <= :High_Day
and wo.siteid = :site_param
and wo.worktype = :worktype_param
and targcompdate between :start_date and :end_date;
END;
這最後和聲明如何工作?它會基本上繞過,如果:start_date param是NULL? – mrshickadance 2013-04-24 13:17:28
參見http://docs.oracle.com/html/A95915_01/sqopr.htm#i1004871 - 在括號內,如果*表達式爲真,則括號的*全部*被視爲真;所以如果':start_date'爲空,那麼'targcompdate'是什麼並不重要,而如果':start_date'有一個值,那麼它必須檢查'targcompdate'是否在指定的範圍內。 – 2013-04-24 13:26:17
好的,謝謝。在這種情況下,我還沒有使用過多的OR,所以在開始的時候有點困惑。雖然有意義。再次感謝。 – mrshickadance 2013-04-24 13:43:23