【问题标题】:Report Designer - Nest IIF inside a Sum with multiple datasets报表设计器 - 将 IIF 嵌套在具有多个数据集的 Sum 中
【发布时间】:2012-12-16 09:25:53
【问题描述】:

虽然这个问题的各个部分有很多代码示例,但作为报表设计器的新手,我无法正确理解语法。

我有一个文本字段,我想显示三个数据集中之一的“保留时间”的总和,这由同一数据集中另一个值为“H”的字段确定。

因此,将其分解,这可以将 ReportDataset 中的所有时间相加。

=Sum((Fields!RegHrs.Value + Fields!OvtHrs.Value),"ReportDataset")

现在,我需要以某种方式将其嵌套在 IIF 中。当 BillStatus = "H" 时,我需要 SUM 表达式成为 IIF 的“真”返回值。

IIF(Fields!BillStatus.Value = "H",true,false)

我似乎无法弄清楚如何组合 IIF 和 SUM,以便它们从“ReportDataset”中提取并且在语法上是正确的。

我一直在尝试这个的各种排列:

=Sum(IIF(Fields!BillStatus.Value = "H",((Fields!RegHrs.Value + Fields!OvtHrs.Value),"ReportDataset"),0))

任何指针?


新信息:

以下报告语法正确,但返回值为 0。

=Sum(IIF(Fields!BillStatus.Value = "H", (Fields!RegHrs.Value + Fields!OvtHrs.Value),0),"ReportDataset")

应该有数百小时返回。

【问题讨论】:

    标签: reporting-services


    【解决方案1】:

    尝试嵌套求和:

    =Sum(IIF(Fields!BillStatus.Value = "H", Sum(Fields!RegHrs.Value + Fields!OvtHrs.Value,"ReportDataset"),0),"ReportDataset")
    

    或者:

    =IIF(Fields!BillStatus.Value = "H", Sum(Fields!RegHrs.Value + Fields!OvtHrs.Value,"ReportDataset"),0)
    

    【讨论】:

    • 哇!出色的。第二个选项是给我价值观。我不知道为什么,但我会用它运行。现在,我不知道我的值是否正确,但我正在获取它们,至少现在我可以按摩我的查询以获得准确的信息。谢谢gl。感谢您的回复。
    • 跟进:为了让它工作,我必须转换我的返回值。目前我正在使用 CDec(Fields!RegAmt.Value) 等。它给了我四位小数,我看不到将其限制为两位的选项。这是怎么做到的?
    • 解决了!如果我在查询中执行以下操作来构建数据集,则报告本身会保留两位小数。 cast(RegHrs as numeric(10,2)) as 'RegHrs', cast(OvtHrs as numeric(10,2)) as 'OvtHrs',
    • 很高兴我能指出你。您将能够在其属性中设置字段数字显示,从而节省您在查询中的操作。
    【解决方案2】:

    您可以使用 SQL 在您的数据集中执行此操作吗?如果是这样,只需使用以下内容:

    SELECT CASE WHEN BillStatus = 'H' THEN RegHrs + OvtHrs END AS HeldHours
    FROM MyTable
    

    那么你需要做的就是对这个字段求和:

    =Sum(Fields!HeldHours.Value, "ReportDataSet")
    

    【讨论】:

    • 克里斯,记得我是报表设计器的新手,这个问题可能看起来并不空洞 关于数据集的最佳实践是什么?有人告诉我,我想要尽可能少,所以我构建了“ReportDataset”来容纳我能想象到的这份报告所需的一切。我发现很难从报告中查询我的数据集。我倾向于想把它当作一张桌子,但发现那行不通。 (续)
    • 我无法从我的数据集中“选择”。我上面的意思是创建多个数据集,每个数据集都有自己独特的数据外观;一个用于保留时间,另一个用于计费,第三个用于非劳动收入等。我感觉您对这个报表设计器有所了解。这里的最佳做法是什么?
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多