【问题标题】:Declaring date in SSRS via logic通过逻辑在 SSRS 中声明日期
【发布时间】:2016-04-21 13:43:08
【问题描述】:

谁能告诉我如何通过某种逻辑在 SSRS 中声明日期?

if today = Monday 然后启动date = today - 3days

if today != (not equal to ) Monday 然后启动date = today - 1day

这应该在 SSRS 中给出,这样如果我点击今天的日期,昨天的数据就会出现在我的报告中。

【问题讨论】:

  • 谢谢,请您修改一下。如果今天的日期是星期一,那么我需要星期六和星期五的数据。星期一到星期六的报告。因为我也有星期六的数据。谢谢

标签: sql reporting-services reporting


【解决方案1】:

假设周日这也应该默认为周五,您可以将参数默认设置为:

=IIf(WeekdayName(Weekday(Today)) = "Sunday", DateAdd("d", -2, today), 
 iif(WeekdayName(Weekday(Today)) = "Monday", DateAdd("d", -3, today), 
 DateAdd("d", -1, today)))

或者对于 SQL:

DECLARE @Date DATE = '2016-04-18'; -- Monday
SET @Date = DATEADD(DAY, CASE (DATEPART(WEEKDAY, @Date) + @@DATEFIRST) % 7 
                            WHEN 1 THEN -2 
                            WHEN 2 THEN -3 
                            ELSE -1 
                        END, DATEDIFF(DAY, 0, @Date));

SELECT  @Date;

这给了2016-04-15(星期五)

【讨论】:

  • 周日可能不需要它。我们通常会做同样的事情,以便用户在周一 - 周五获得报告,而周一的报告包括周末(周五 - 周日)。
  • 感谢您的回答,有一个要求是在日期参数中应该只有一个日期条目,并且应该从输入日期到昨天的结束日期生成报告。
  • 谢谢,请您修改一下。如果今天的日期是周一,那么我需要周六和周五的数据。周一到周六的报告。因为我也有周六的数据。谢谢
【解决方案2】:

在SSRS中写一个表达式来设置日期

=IIF(Weekday(Today()) = 2,DateAdd(DateInterval.Day,-3, Today()),DateAdd(DateInterval.Day,-1, Today()))

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 2019-04-24
    • 1970-01-01
    • 2014-04-03
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多