我在SSRS中有一些預設日期參數('上週','兩週前'等)。我想還有一個'All'參數,它將忽略where子句中的忽略where子句中的DATETIME參數
並返回所有內容,而不管日期。
我試圖建立一些動態SQL,但整體查詢與許多工會相當大,併成爲一個混亂本身。有沒有辦法在這裏構建一個案例陳述來簡化我想要實現的目標?
我在SSRS中有一些預設日期參數('上週','兩週前'等)。我想還有一個'All'參數,它將忽略where子句中的忽略where子句中的DATETIME參數
並返回所有內容,而不管日期。
我試圖建立一些動態SQL,但整體查詢與許多工會相當大,併成爲一個混亂本身。有沒有辦法在這裏構建一個案例陳述來簡化我想要實現的目標?
作爲替代SeanLange的建議,更可擴展的,你可以這樣做:
AND createdon BETWEEN ISNULL(@FromDate, createdon) AND ISNULL(@ToDate, createdon)
然後忽略這些參數中的一個或兩個,簡單地傳遞NULL
在createdon
之間的比較。本身總是成功的,所以這個條款永遠是真的。
感謝您的反饋意見。今天是我第一天能夠測試你的解決方案,並驗證它的工作原理。我的報告是按照SeanLange的建議去設計的。再次感謝。 – mrbungle 2015-02-25 15:54:39
只需添加一個「OR @All = 1」或您正在使用的任何指示您想要的所有行。 – 2015-02-23 22:11:50
儘量避免在datetime之間使用'between',因爲您可以輕鬆創建缺少任何有時間的最後一天(= @ToDate)的行的錯誤,例如, != '00:00' – 2015-02-23 22:14:13
@SeanLange,非常感謝,這麼簡單但卻逃脫了我,感謝你的快速回應。如果您將其添加爲答案,我將對其進行投票。 – mrbungle 2015-02-23 22:18:22