我必须构建一个报告,用户希望在SSRS中查看来自2个不同来源的合并数据。该报告有一些参数。 这些参数集对于两个数据源都是通用的。 我有2个数据源A和B.我写了2个cte&s;然后在这两个cte之间建立了一个联合。我的问题是,是否有一种方法可以根据两个来源中不同的各个参数值从两个组合中获取组合数据。更具体地说,例如我有3个参数@ id,@ name和@country。 无法加入bcz数据在两个来源中都是不同的。 来源A和B都有id,name,class,sales,country
代码
Create Procedure [sp_1]
@id varchar(50),
@name varchar(max),
@country varchar(500)
As begin
;with cte1
As (select * from A)
,cte2
As ( select * from B)
,ReportingData
As(select * from A union select * from B)
select * from ReportingData
----这是代码结构--- sp创建成功。 来源A数据
id , name , class, sales, country
1A Sid 02 45 USA
2A Amri 03 56 USA
来源B数据
id , name , class, sales, country
1 Larry 02 45 USA
2 Amri 04 100 Aus
我想知道的是,如果我通过
@id = 1A
@name = Amri
@Country = USA
到我的sp我会得到属于Amri的综合结果吗?
即。期望的输出
id, name, class, sales, country
2A Amri 03 56 USA
2 Amri 04 100 Aus
技术上可行吗?
有解决方法吗?
任何建议都将不胜感激!
答案 0 :(得分:0)
假设您不关心其他参数,除了where子句外,您有大部分代码
Create Procedure [sp_1]
@id varchar(50),
@name varchar(max),
@country varchar(500)
As begin
;with cte1
As (select * from A)
,cte2
As ( select * from B)
,ReportingData
As(select * from A union select * from B)
select
ReportingData.*
from ReportingData
where ReportingData.Name = @name
所以现在如果你通过了Amri'作为您的名称参数值..存储过程将返回所需的结果(如您的预期结果)
如果您需要对其他参数进行进一步过滤,那么您只需添加and @id = id
等'。,