表中的記錄包含一系列有效日期,例如: * tbl1.start_date *和* tbl1.end_date *。因此,爲了確保我獲得對特定日期範圍有效的所有記錄,選擇邏輯爲:<...> WHERE end_date >= @dtFrom AND start_date < @dtTo
(在SQL語句中使用的@dtTo參數實際上是計算的第二天在* @ prmDt_To *參數中使用的報告)。SSRS 2008 - 多個分組日期範圍
現在在報告中,我需要計算指定數據範圍內每一天的記錄數,幷包括沒有有效記錄的天數(如果有的話)。因此,檢索到的記錄可能在幾個不同的日子裏被計算。我可以用數據集中的遞歸CTE相對容易地做到這一點,但我的經驗法則是避免SQL數據庫中不必要的負載,而只返回必要的原始數據並讓Report引擎處理分組。那麼在SSRS中有沒有辦法做到這一點?
謝謝 謝爾蓋
顯然,遞歸CTE是一個痛苦的查詢,僅僅幾天的數據提取花費了將近20秒,這在開發此報告的環境中是不可接受的。如果我只提取日期範圍的數據,而沒有CTE,則執行時間不到2秒。這就是爲什麼我想要在報表設計器中使用它的機制。 – krysolov 2013-03-06 22:07:06
這部分將取決於您加入CTE的數據。嘗試用臨時表替換CTE以查看是否改變了性能。如果是這樣,那麼SQL爲CTE選擇了一個壞計劃,但臨時表應該是一個很好的解決方法。 另外,請確保您的表格上有適當的索引。 – 2013-03-07 00:56:06