Reporting services 报表设计器-将IIF嵌套在具有多个数据集的Sum中

Reporting services 报表设计器-将IIF嵌套在具有多个数据集的Sum中,reporting-services,Reporting Services,虽然这个问题的各个部分都有很多代码示例,但作为报表设计器的新手,我无法获得正确的语法 我有一个textfield,我想显示三个数据集中某个数据集的“保持小时数”的总和,这是由同一数据集中另一个值为“H”的字段确定的 因此,把它分成几部分,这可以计算ReportDataset中所有小时的总和 =Sum((Fields!RegHrs.Value + Fields!OvtHrs.Value),"ReportDataset") 现在,不知怎的,我需要把它放在IIF里。当BillStatus=“H”为

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

我有一个textfield,我想显示三个数据集中某个数据集的“保持小时数”的总和,这是由同一数据集中另一个值为“H”的字段确定的

因此,把它分成几部分,这可以计算ReportDataset中所有小时的总和

=Sum((Fields!RegHrs.Value + Fields!OvtHrs.Value),"ReportDataset")
现在,不知怎的,我需要把它放在IIF里。当BillStatus=“H”为

我似乎不知道如何组合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")

返回的时间应该有数百小时。

您可以使用SQL在数据集中执行此操作吗?如果是这样,请使用以下方法:

SELECT CASE WHEN BillStatus = 'H' THEN RegHrs + OvtHrs END AS HeldHours
FROM MyTable
然后,只需对该字段求和:

=Sum(Fields!HeldHours.Value, "ReportDataSet")
尝试嵌套求和:

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


Chris,请记住我是报告设计师的新手,这个问题可能看起来并不空洞,关于数据集的最佳实践是什么?有人告诉我,我想要尽可能少的数据,所以我构建了“ReportDataset”来容纳我能想象的这份报告所需要的一切。我发现很难从报告中查询我的数据集。我倾向于把它当作一张桌子,但我发现这不管用。(续)我无法“选择”我的数据集。我认为上面的意思是创建多个数据集,每个数据集都有自己独特的数据外观;一个用于固定时间,另一个用于计费,第三个用于非人工收入,等等。我感觉您对这个报表设计器有些了解。这里最好的做法是什么?哇!杰出的第二个选择是给我价值观。我不知道为什么,但我会坚持下去。现在,我不知道我的值是否正确,但我正在得到它们,至少现在我可以通过调整我的查询来获得准确的信息。谢谢你。我很感激你的回答。后续:为了让它发挥作用,我必须转换我的返回值。目前我正在使用CDec(Fields!RegAmt.Value)等,它给了我四位小数,我看不到将其限制为两位的选项。怎么做到的?解决了!如果我在构建数据集的查询中执行以下操作,则报告本身将遵守两位小数。将(RegHrs作为数字(10,2))转换为'RegHrs',将(OvtHrs作为数字(10,2))转换为'OvtHrs',我很高兴我能够指出你。您可以在属性中设置字段数字显示,而不必在查询中进行设置。
=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)