Tsql SQL Server 2008 R2-存储顶级结果并在SSRS中使用

Tsql SQL Server 2008 R2-存储顶级结果并在SSRS中使用,tsql,reporting-services,sql-server-2008-r2,temp-tables,Tsql,Reporting Services,Sql Server 2008 R2,Temp Tables,我有一份SSRS报告,显示收到投诉后的总天数。此SQL查询是今天的日期与上次收到投诉的日期之间的差值 SELECT DATEDIFF(day, MAX(complaints.ComplaintReceived1Date),CURRENT_TIMESTAMP) as total FROM complaints WITH (nolock) 例如,如果设置为30(天),然后在我的SSRS报告中收到投诉,我希望显示30作为以前没有投诉记录的天数。是否有方法存储以前的结果并调用此数据?可能是临时表?您

我有一份SSRS报告,显示收到投诉后的总天数。此SQL查询是今天的日期与上次收到投诉的日期之间的差值

SELECT DATEDIFF(day, MAX(complaints.ComplaintReceived1Date),CURRENT_TIMESTAMP) as total 
FROM complaints WITH (nolock)

例如,如果设置为30(天),然后在我的SSRS报告中收到投诉,我希望显示30作为以前没有投诉记录的天数。是否有方法存储以前的结果并调用此数据?可能是临时表?

您已经将其存储在SQL查询引用的表中

我会从那里取回它:

; with previouscomplaint as (

select 
complaintreceived1date,
RN = ROW_NUMBER() over (partition by complaintreceived1dateorder by complaintreceived1date desc))


select datediff(day,complaintreceived1date,current_timestamp) as previoustotal from previouscomplaint where RN=2
如果需要两行之间的日期,请执行第二条语句:

select datediff(day, (select complaintreceived1date from previouscomplaint where rn = 2),(select complaintreceived1date from previouscomplaint where rn = 1)) as previoustotal

这没有经过测试,但应该可以使用。

您好,谢谢@Eric Hauenstein的评论-我没有将此存储在表中,我只有“收到的投诉”表,而不是“以前的投诉”表。我只是想找出从上次收到投诉到今天为止的天数。例如,当前设置为30,但在此之前设置为40,因此在SSRS中,我想在我的报告中显示“记录无投诉天数=40”,不确定如何实现。您是从“投诉”表中选择的,对吗?它应该包含您收到的所有投诉的列表,对吗?如果是这样,那么我发布的代码应该在当前投诉之前检索投诉,我认为这是您想要的。谢谢@Eric Hauenstein这正是我想要的