TSQL SSRS 交叉引用另一列

TSQL SSRS Cross Reference another column

ID   | Col2 | Col3 | SequenceNum   
--------------------------------   
1    |  x   |  12  |  5
2    |  y   |  11  |  6    
3    |  a   |  45  |  7    
100  |  b   |  23  |  8   
101  |  a   |  16  |  9    
102  |  b   |  28  |  10    
4    |  a   |  9   |  11
5    |  b   |  26  |  12
6    |  x   |  100 |  13

我现在有一份 SSRS 报告,您可以输入 ID 来查看这些 ID 的数据。例如假设你输入 start ID 2 end ID 5 它会返回 2,3,4,5Col2Col3 数据。

但我真正想要的是 return 2,3,100,101,102,3,4,5

我相信可能有某种方法可以交叉引用 SequenceNum 专栏,但我对 SQL 和 SSRS 还很陌生,有人可以帮忙吗?

因此用户将输入参数... start-ID = 2 其中 SequenceNum6 end-ID = 5 其中 SequenceNum12

分别从起始 ID 和结束 ID 提供的值中提取起始和结束序列号,并在 WHERE 条件下使用它们,如下所示

DECLARE @StartingSeqNum INT, @EndingSeqNum 
SELECT @StartingSeqNum  = SeqNum FROM tableName  WHERE ID = @start_id
SELECT @EndingSeqNum = SeqNum FROM tableName  WHERE ID = @end_id

SELECT Col2,Col3
FROM tableName
WHERE SeqNum BETWEEN @StartingSeqNum AND @EndingSeqNum 

当您使用 SSRS 时,您可以为参数指定 ValueLabel

使用以下 SQL 作为源创建数据集:

select distinct ID as Label
               ,SequenceNum as Value
from YourTable
order by SequenceNum

然后在参数的属性中,Available Values select Get values from query 然后 select 上面的数据集。将 Value fieldLabel field 设置为标签和值列,然后单击 OK。您需要使用相同的数据集为开始和结束参数执行此操作。

您的参数现在将是向用户显示 ID 值的下拉菜单,但会将 SequenceNum 值传递给您的查询。然后您可以使用这些来过滤您的主要数据集。