2011-05-11 97 views
0

我正在SSRS 2005中創建一個包含大量數據集的報告。一個例子可能是運送貨物的卡車數量以及每個車隊交付的箱子數量。卡車有起飛時間,可能會在到達目的地之前行駛很長時間(我想看看有多少輛卡車在途中)。示例結果集可能如下所示:SSRS 2005將不同參數傳遞給同一數據集

+---------------------+------------+------------+------------+   
|      | Current |  MTD |  YTD | 
+---------------------+------------+------------+------------+ 
| Convoy 1 | # Trucks |  3  |  0  |  16  | 
|   | Boxes |  150 |  0  | 1005 | 
+----------+----------+------------+------------+------------+ 
| Convoy 2 | # Trucks |  0  |  12  |  8  | 
|   | Boxes |  0  |  144 |  113 | 
+----------+----------+------------+------------+------------+ 
| Convoy 3 | # Trucks |  0  |  0  |  0  | 
|   | Boxes |  0  |  0  |  0  | 
+----------+----------+------------+------------+------------+ 

我被要求將sql放入報告中,而不是使用存儲的特效或視圖。

即使當時沒有卡車交付貨物,所有車隊都必須出現在結果集中(如在車隊3中)。我目前正在做的查詢是找到所有的車隊,然後離開加入每個日期範圍。例如,僞查詢是:

select a.convoy_name, current.trucks, current.weight, mtd.trucks, mtd.weight, ytd.trucks, ytd.weight 
from(
    (get all convoys) a 
    left join 
    (get trucks and boxes for current date) current 
    on a.something = current.something 
    left join 
    (get trucks and boxes for mtd) mtd 
    on a.something = mtd.something 
    left join 
    (get trucks and boxes for ytd) ytd 
    on a.something = ytd.something 
) 

日期查詢之間的唯一區別是開始日期。我希望能夠做的是創建一個通用查詢,我可以將開始日期傳入並獲取當前,mtd或ytd結果(就像我正在使用存儲過程一樣)。有人發佈了類似的問題here,但沒有回答。

有沒有辦法做到這一點是SSRS 2005? (而且我很想知道在後續版本中是否有可能)。

我寧願不添加一堆多個數據集作爲我報告一個已經擁有約10

回答

0

我不能完全肯定我理解你的問題(對不起!)。 看着鏈接的其他問題看起來像他們希望像Excel SUMIF命令那樣,他們不在查詢級別篩選數據,而是在報告級別篩選。 這對於SSRS 2005來說是可行的,方法是創建一個未在查詢中使用的參數,然後在組詳細級別進行過濾。 這是否接近回答你的問題?

+0

嗨湯姆。這不是我正在尋找的東西 - 我正在尋找更多的通用查詢來讓我傳遞參數(類似於人們將如何使用,例如,可以在整個應用程序中重用的排序函數)。這會讓事情變得更清楚嗎? – lmg 2011-05-26 13:53:13

+0

啊哈,以爲我到了那裏!每個數據集/查詢只執行一次AFAIK,因此無法重複調用它以獲取不同的數據。有時你可以通過返回大型數據集,然後在使用組過濾器的佈局中將它們切塊。 – TomG 2011-06-01 08:13:05

+0

我希望有辦法做到這一點,但我想沒有這樣的運氣。感謝您的幫助TomG! – lmg 2011-06-07 21:11:34

相關問題