【问题标题】:SSRS Expression Doesn't Read Value from LookupSSRS 表达式不从查找中读取值
【发布时间】:2021-03-20 04:59:02
【问题描述】:

我的问题:我有一个 SSRS 报告,它按指标、设施和 month_end dt 分组。该报告使用我拥有的分组显示每个月及其相应的计算值,但 YTD 不起作用。我第一次在组外有 YTD,我在组内尝试过。

我可以显示 YTD 值,但它会一遍又一遍地重复第一个指标的 YTD 值,而不是区分不同的指标名称,尽管数据集中存在数据。 SSRS 需要一个设施参数来运行,因此它一次只运行一个设施,因此可能不需要该组。

YTD 有点复杂,因为我用于 YTD 的日期范围会随度量标准名称发生变化,因此并非所有 12 个月都包括在内,所以我让它在涉及 SSRS 数据集之前计算我在 SQL 中需要的 YTD 值,但是我认为与我的存储方式和分组方式有关,这使我无法在表达式中找到它。

SSRS DESIGN

Data Structure

正如您在数据结构示例中所见,我使用不同的 Agg_Type 存储了 YTD 值。

我在 YTD 测试和 YTD 表达式中试过这个:

Lookup("Y",Fields!ROW_AGG_TYPE.Value, Fields!DASH_VALUE.Value, "FIT_Dash_Data")

但它只是一遍又一遍地给我第一个指标的值,而不是区分指标,尽管行分组应该强制这样做??

我尝试在主数据集上创建一个 Join 列,然后在第二个数据集上创建它,它刚刚过滤为 Y 值,然后对其进行查找,但是当我这样做时我没有得到任何数据。我觉得我应该能够从一个数据集做到这一点,因为我可以完全控制我的 SQL 设计。

这个连接到第二个数据集以查找 Y 值但不返回任何内容。

=Lookup(Fields!JoinColumn.Value,Fields!JoinColumn.Value, Fields!DASH_VALUE.Value, "YTD")

这是在两个数据集中创建和存储连接列的方式:

=Fields!METRIC_NAME.Value & "||" & Fields!FAC_CD.Value & "||" & Fields!ROW_AGG_TYPE.Value

对于任何人来说,是否有任何东西可能会阻止我从我的数据中获取价值?作为报表开发工具,我对 SSRS 很陌生,所以我确定我只是遗漏了一些东西。

【问题讨论】:

    标签: reporting-services lookup


    【解决方案1】:

    您的 LOOKUP 总是返回第一个值的原因是 LOOKUP 检查任何带有“Y”的记录,并且总是找到第一个并停止。我认为您可以使用您提到的 JOIN 来修复它。

    =Lookup(Fields!METRIC_NAME.Value & "||" & Fields!FAC_CD.Value & "||" & "Y", 
            Fields!METRIC_NAME.Value & "||" & Fields!FAC_CD.Value & "||" & Fields!ROW_AGG_TYPE.Value, 
            Fields!DASH_VALUE.Value, "FIT_Dash_Data")
    

    这将检查具有匹配指标和设施的记录。

    但我不明白为什么你不能只从一个数据集中聚合你的当前值

    =MAX(IIF(Fields!ROW_AGG_TYPE.Value = "Y", Fields!DASH_VALUE.Value, NOTHING)
    

    这将检查组中的记录并为 Y 的记录提供 MAX 值,而不是 Y 的记录则为 NOTHING(SSRS 为 NULL)。从数据来看,每个 FAC 只有一条 Y 记录。

    【讨论】:

    • 谢谢!!!我想我是那么接近!我没有想到MAX。这非常有效。它只是缺少一个括号,这很好我添加了它,但只是在这里为任何可能尝试使用它的人说它:)。 =MAX(IIF(Fields!ROW_AGG_TYPE.Value = "Y", Fields!DASH_VALUE.Value, NOTHING))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多