2017-08-10 86 views
1

我已经在SO一直在寻找的行组最后一个记录,但没有发现任何解决了这个问题SSRS选择使用参数

我为使用SSRS本机模式,我想创建带有过滤器的报告基于参数@idRiskType。

考虑下表:(risktrail)

enter image description here

我创建了一个存储过程来找到所有的客户最后的风险类型,它工作正常。那就是:

CREATE procedure [dbo].[byRisk] @riskType int 
as 
select c.idCustomer, rsTrail.idRiskType 
from customer as c 
    cross apply 
     (select top 1 idRiskType 
     from risktrail 
     where risktrail.idCustomer = c.idCustomer 
     order by idTrail desc) as rsTrail 

此存储过程outpouts如下:

enter image description here

  • 问题:问题是,我不知道如何应用参数@riskType只过滤最后的风险符合参数。 即如果我使用AND运算符在where子句中应用参数,查询将返回与该参数匹配的表中的任何行,但我希望它只返回指示每个客户的最后有效idRiskType的行。
+0

您是否在子查询之外尝试了额外的WHERE? – Schmocken

+0

我不太明白你的意思。根据您的样本数据,您的期望输出是什么? –

+0

您是否试过在最后添加“WHERE rsTrail.idRiskType = @idRiskType”? –

回答

2
CREATE procedure [dbo].[byRisk] @riskType int 
as 
select c.idCustomer, rsTrail.idRiskType 
from customer as c 
    cross apply 
    (select top 1 idRiskType 
    from risktrail 
    where risktrail.idCustomer = c.idCustomer 
    order by idTrail desc) as rsTrail 
    where rsTrail.idRiskType = @idRiskType