2015-02-23 150 views
0

我在SSRS中有一些預設日期參數('上週','兩週前'等)。我想還有一個'All'參數,它將忽略where子句中的忽略where子句中的DATETIME參數

並返回所有內容,而不管日期。

我試圖建立一些動態SQL,但整體查詢與許多工會相當大,併成爲一個混亂本身。有沒有辦法在這裏構建一個案例陳述來簡化我想要實現的目標?

+6

只需添加一個「OR @All = 1」或您正在使用的任何指示您想要的所有行。 – 2015-02-23 22:11:50

+0

儘量避免在datetime之間使用'between',因爲您可以輕鬆創建缺少任何有時間的最後一天(= @ToDate)的行的錯誤,例如, != '00:00' – 2015-02-23 22:14:13

+0

@SeanLange,非常感謝,這麼簡單但卻逃脫了我,感謝你的快速回應。如果您將其添加爲答案,我將對其進行投票。 – mrbungle 2015-02-23 22:18:22

回答

1

作爲替代SeanLange的建議,更可擴展的,你可以這樣做:

AND createdon BETWEEN ISNULL(@FromDate, createdon) AND ISNULL(@ToDate, createdon)

然後忽略這些參數中的一個或兩個,簡單地傳遞NULLcreatedon之間的比較。本身總是成功的,所以這個條款永遠是真的。

+0

感謝您的反饋意見。今天是我第一天能夠測試你的解決方案,並驗證它的工作原理。我的報告是按照SeanLange的建議去設計的。再次感謝。 – mrbungle 2015-02-25 15:54:39