Ssrs 2012 有没有办法从多个数据集中获取所有列值的列表

Ssrs 2012 有没有办法从多个数据集中获取所有列值的列表,ssrs-2012,Ssrs 2012,我们有两个数据集。两个数据集都有一个名为Office的列。假设Dataset1 Office列具有伦敦、利物浦和Dataset2的值Office列具有华盛顿、加利福尼亚的值 在SSRS中有没有什么方法可以像UNION ALL(但在SSRS中)那样在一个表列中生成一个所有Office值的列表?可能有更优雅的方法,但这就是我所能想到的 每个记录都需要一个唯一的数字id 假设您不能在数据集查询中简单地将它们合并在一起,如果您可以向每个记录添加一个数字ID,那么您就可以这样做(尽管有点笨拙) 首先,我创

我们有两个数据集。两个数据集都有一个名为Office的列。假设Dataset1 Office列具有伦敦、利物浦和Dataset2的值Office列具有华盛顿、加利福尼亚的值


在SSRS中有没有什么方法可以像UNION ALL(但在SSRS中)那样在一个表列中生成一个所有Office值的列表?

可能有更优雅的方法,但这就是我所能想到的

每个记录都需要一个唯一的数字id

假设您不能在数据集查询中简单地将它们合并在一起,如果您可以向每个记录添加一个数字ID,那么您就可以这样做(尽管有点笨拙)

首先,我创建了两个数据集
ds1
ds2
,以保存两个办公室名称列表

例如,第一个数据集查询就是这样

DECLARE @t TABLE(OfficeID int, Office varchar(20))
INSERT INTO @t VALUES
(1, 'London'),
(2, 'Liverpool')
SELECT * FROM @t
第二个是这个

DECLARE @t TABLE(OfficeID int, Office varchar(20))
INSERT INTO @t VALUES
(10, 'Washington'),
(11, 'California')
SELECT * FROM @t
如您所见,每个办公室现在都有一个唯一的数字id

接下来,我需要另一个数据集,其中包含一个涵盖整个office ID范围的编号列表。在本例中,范围仅为20个数字 注意:在其他系统的SQL Server上进行此项工作时,您必须想出另一种获取数字列表的方法

因此,对dsNums的查询是

declare @n table(num int)
insert into @n
select top 20 row_number() over(order by t1.number) as N
from   master..spt_values t1 
       cross join master..spt_values t2
SELECT * FROM @n
接下来,我向报告中添加了一个表,将其缩减为两列,并将其绑定到dsNums。第一列只是
[num]
字段

第二个是执行两次查找并获取第一个非空结果的表达式。表情是

=IIF(
    LEN(LOOKUP(Fields!num.Value, Fields!OfficeID.Value, Fields!Office.Value, "ds1"))>0
    , LOOKUP(Fields!num.Value, Fields!OfficeID.Value, Fields!Office.Value, "ds1")
    , LOOKUP(Fields!num.Value, Fields!OfficeID.Value, Fields!Office.Value, "ds2")
    )
如果我们现在运行报告,我们会得到。。

最后,我们需要隐藏空行。为此,我将行Visibility表达式设置为

=LEN(ReportItems!LookupResult.Value) = 0
结果是这样的(显然您不需要num列,但它只是为了说明)


我想,由于某些原因,您无法在SQL server上执行此操作。那么,这些记录是否有任何形式的数字id与之关联?如果没有,您是否可以向每个数据集添加数字id?