我在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 :(得分:0)
我不完全确定我理解你的问题(对不起!)。 看看链接的另一个问题,看起来他们希望像Excel SUMIF命令那样他们不在查询级别过滤数据,而是在报告级别过滤。 通过创建一个未在查询中使用的参数然后在组详细信息级别进行过滤,可以使用SSRS 2005。 这是否接近回答你的问题?