Crystal reports Crystal报表中的条件不同计数
我有这样一个数据集:Crystal reports Crystal报表中的条件不同计数,crystal-reports,formula,crystal-reports-2010,summary,Crystal Reports,Formula,Crystal Reports 2010,Summary,我有这样一个数据集: ID PersonID ClassID Attended Converted 1 1 1 1 0 2 1 1 1 1 3 1 1 1 1 4 2 1 1 1 5 3
ID PersonID ClassID Attended Converted
1 1 1 1 0
2 1 1 1 1
3 1 1 1 1
4 2 1 1 1
5 3 2 0 0
6 3 2 1 1
7 4 2 1 0
ID PersonID Attended Converted
CLASS 1 GROUP
1 1 1 0
2 1 1 1
3 1 1 1
4 2 1 1
Percent= 2/4 = 50%
CLASS 2 GROUP
5 3 0 0
6 3 1 1
7 4 1 0
Percent= 1/2 = 50%
我正在构建一个按ClassID分组的报告(实际上我使用了一个参数,该参数允许在几个不同的列上进行分组,但为了简单起见,我只使用ClassID)。我需要在每组页脚中进行计算。为了进行计算,我需要使用该组特有的personid来计算记录。在一种情况下,问题是这些记录还需要符合标准。例如:
X = [Count of records where Converted = 1 with distinct PersonID]
Y = [Count of records where Attended = 1]
然后我需要以百分比的形式显示商:
(X/Y)*100
if {@fY} = 0 then 0
else ({@fX}/{@fY})*100
所以最终报告应该是这样的:
ID PersonID ClassID Attended Converted
1 1 1 1 0
2 1 1 1 1
3 1 1 1 1
4 2 1 1 1
5 3 2 0 0
6 3 2 1 1
7 4 2 1 0
ID PersonID Attended Converted
CLASS 1 GROUP
1 1 1 0
2 1 1 1
3 1 1 1
4 2 1 1
Percent= 2/4 = 50%
CLASS 2 GROUP
5 3 0 0
6 3 1 1
7 4 1 0
Percent= 1/2 = 50%
请注意,在类别1组中,有3条记录的Converted=1,但“X”(分子)由于PersonID重复而等于2。如何在Crystal Reports中计算此值?我必须创建一些不同的公式,以便在的帮助下使其工作 首先,我按照该站点的建议创建了一个名为fNull的函数,该函数为空。我想知道在它的位置键入null是否可以完成这项工作,但没有进行测试。接下来,我创建了公式来评估一行是否有人参与以及一行是否被转换 FTRIALAT:
//Allows row to be counted if AttendedTrial is true
if {ConversionData.AttendedTrial} = true
then CStr({ConversionData.PersonID})
else {@fNull}
fTrialsConverted:
//Allows row to be counted if Converted is true
if {ConversionData.Converted} = true
then CStr({ConversionData.PersonID})
else {@fNull}
请注意,如果出席或转换为true,我将返回PersonID。这让我可以在下一个公式中进行不同的计数(原始问题的X):
外汇:
这将放置在组页脚中。再次请记住@fTrialsConverted返回的是已转换的试用人名(或fNull,不计算在内)。我不明白的一件事是,如果group by字段(ClassID)在group footer中,为什么我必须显式地包含它,但我这样做了,否则它会计算所有组的总数。接下来,Y只是一个直截了当的数字
财政年度:
最后是计算百分比的公式:
(X/Y)*100
if {@fY} = 0 then 0
else ({@fX}/{@fY})*100
我最后要分享的是,我还想计算报表页脚中所有组的总数。计算总Y很容易,它与fY公式相同,只是您省略了group by参数。计算总X更为复杂,因为我需要每组X的总和,而Crystal无法求另一个总和。因此,我更新了我的X公式,以便在全局变量中保留一个运行总数:
外汇:
现在我可以在页脚中使用rtConverted进行计算。这导致了另一件让我困惑的事情,我花了几个小时才弄明白。在我明确添加global关键字之前,rtConverted没有被视为全局变量,尽管我看到的所有文档都说global是默认值。一旦我弄明白了这一点,一切都很顺利。若第5行的ClassID值为“1”,则分组是错误的。我希望应该是“2”!!抢手货我已经更新了源数据。感谢+1提供了非常详细的解决方案!谢谢你帮我省了几个小时的时间headaches@MPaul这是一个相当具体的问题。我很高兴有人能帮上忙!