【问题标题】:filtering out history based on dates根据日期过滤历史
【发布时间】:2013-03-31 18:34:15
【问题描述】:

我正在使用 SQL Server 报告工具 2008 并创建了如下表。

我有一个产生以下结果的数据集。基本上,每次数据库中的费用字段更改时,都会为该表提供当前费用的停止日期,然后是新费用的新生效日期。这通常会导致出现空白的停止日期。 (例如 UCN 1 和 UCN 495)如果从未收取过费用,那么您也会得到一个空白的停止日期。 (例如 UCN 11)

我发现如果你使用下面的年份函数作为计算字段,你会得到一个空白字段的结果为 1,然后可以使用过滤函数只包含“1”来查找所有当前费用。

=Year(Fields!CEASED_DATE.Value)

但在某些情况下,在这种情况下,UCN 492 没有获得新的生效日期,因此没有空白的终止日期。在一个有 40,000 条记录的数据库中,这只发生了 100 次。

我想要做的是列出数据库中的每个 UCN 及其当前充电,如果没有充电电流,则将该字段留空。基本上我想过滤掉历史。

这可能吗?

UCN......CEASED_DATE....EFFECTIVE_DATE.....Charge  

1........12 July 2009...11 July 2009.......Rate 3  
1.......................12 July 2009.......Rate 4  

11  

492......12 July 2009...01 January 1900....Rate 4  
492......15 July 2009...12 July 2009.......Rate 5  
492......31 July 2011...15 July 2009.......Rate 2  

495......12 April 2009..04 November 1946...Rate 2  
495.....................12 April 2009......Rate 3

【问题讨论】:

    标签: sql-server-2008 reporting-services ssrs-2008-r2


    【解决方案1】:

    您能否在报告服务中的 UCN 仅分组的 tablix 中使用以下函数?

    =max(iif(year(Fields!CEASED_DATE.Value)=1, Fields!CHARGE.Value, ""))
    

    或者在数据集中类似于?

    Select UCN,
       Max(case when ceased_date = '' then charge else '' end) current_charge
    From charges
    Group by UCN
    

    【讨论】:

    • 嗨,是的,tablix 选项有效,这对上述功能有很大帮助。让它工作是大型整体报告的一部分,我已经开始在表格而不是 tablix 中完成。将该函数放入一列后,我认为我需要对其进行过滤,但我无法在空白字段上对其进行过滤,因为我会丢失所有重要的记录 11 和 492。在我更改为 tablix 之前,这里有什么建议吗?谢谢
    • 基本上它是根据上面的表达式抑制多行数据,但是当为空白时,保留其中一行,这正是 tablix 所做的,但在表格中
    • 我不相信您可以将其用作数据集上的过滤器。我认为唯一的方法是尽可能更改您的查询,或者在 tablix 中使用归档技术。
    猜你喜欢
    • 2017-09-13
    • 2018-05-17
    • 2021-02-05
    • 2023-03-28
    • 2020-03-31
    • 1970-01-01
    • 2019-12-15
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多