2011-05-11 77 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

相关问题