我有这个T-SQL存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE dbo.datealter
@LastChangeDate AS date
AS
BEGIN
SELECT
s.[DivNo]as Division,
SUM(CASE WHEN s.Date = @LastChangeDate
THEN s.SELLINC ELSE 0 END) ActualSales
FROM
[dbo].[NewLayerReports] s
WHERE
s.BRN = 1
GROUP BY
s.[DivNo]
END
GO
当我执行此操作时,它可以正常工作。
我在SSRS报告中使用此存储过程。当我执行SSRS报告时,它要求我输入或选择日期。
我总是想要一个日历显示去年当月。例如,如果我在2016年11月运行报告,则日历应显示在2015年11月。
我们怎么能这样做?
在SSRS参数中,如果我设置了默认值,我就无法编辑日期值。请看图片,
答案 0 :(得分:3)
您可以为参数指定默认值。将参数的默认值表达为Date.Now.Date.AddYears(-1)
。当您运行报告时,它将显示上一年的同一个月。
答案 1 :(得分:2)
如果要在SSRS中设置参数的默认值,请右键单击参数并选择“属性”。在“默认值”屏幕中,您可以设置返回日期的表达式。
要获得去年的这一天,您可以使用:
=today.AddYears(-1)
虽然如果你想要月初,你还需要添加日期:
=today.AddYears(-1).AddDays(1-today.day())
如果出现,您只想显示相对于用户选择的日期。在这种情况下,您可以根据需要在报表元素中使用上述表达式(例如报表顶部的标题),但将today
的任何实例替换为Parameters!ParameterName.Value
。