我有一个数据库中的引用列表。如果参考在一个月内存在,那么它被评定为1或99.如果参考不存在,那么它的评级为0.每3个月形成一个季度。在富客户端中,我可以创建以下交叉表:
| Q1 Q1 Q1 | Q2 Q2 Q2
Ref | M1 M2 M3 | M4 M5 M6
----|-----------------|-----------------
a | 99 99 99 | 99 01 99
b | 00 01 99 | 99 01 00
c | 99 00 00 | 00 00 00
d | 99 01 01 | 01 01 99
e | 00 00 01 | 01 99 01
f | 01 01 01 | 99 99 99
g | 01 01 01 | 00 00 00
h | 99 01 00 | 00 00 00
i | 00 00 01 | 01 99 01
j | 00 00 00 | 00 01 99
k | 00 00 00 | 01 01 01
我想要做的是每个季度,计算该季度某个时间点存在的总参考数量,并计算结束的任何参考值,其评级为99.现在通过结束我的意思是在本季度给出的最后一次评级。
E.g。第一季度的参考a存在,也将计入99.第一季度的参考值也存在,其最终评级将被视为1.参考资料j在第一季度根本不计算。
完整的结果将是:
Ref | Last Q1 | Last Q2
----|---------|---------
a | 99 | 99
b | 99 | 01
c | 99 | 00
d | 01 | 99
e | 01 | 01
f | 01 | 99
g | 01 | 00
h | 01 | 00
i | 01 | 01
j | 00 | 99
k | 00 | 01
这给了我最后的计数:
Q | Q1 | Q2
-----------|----|---
99 Count | 3 | 4
Full Count | 9 | 8
哪些业务对象代码可以直接跳转到计数表?
我认为关键是要获得一些代码来计算每个客户每季度的“最终评级”,但是我没有运气这样做。我还没有找到在一个公式中使用多个'where'子句的方法。
答案 0 :(得分:1)
您需要使用多个变量来完成此任务。
假设你开始使用名为的对象:
| [Qtr]
| [Mth]
----|------------
[Ref] | [Val]
1)创建一个变量,以保持每季度的最大月份具有非零值:
MaxM = Max([Mth]) In ([Ref];[Qtr]) Where ([Val] <>"00")
将其放入交叉表的正文中以验证结果:
Q1 Q2
a M3 M6
b M3 M5
c M1
d M3 M6
e M3 M6
f M3 M6
g M3
h M2
i M3 M6
j M6
k M6
2)创建另一个变量来计算月份等于季度中最后一个月的99个数字,其值为:
LastIs99Cnt = If (Max([Val]) Where ( [Mth] = [MaxM])) = "99" Then 1 Else 0
使用此变量替换交叉表中的[MaxM],以便我们验证:
Q1 Q2
a 1 1
b 1 0
c 1 0
d 0 1
e 0 0
f 0 1
g 0 0
h 0 0
i 0 0
j 0 1
k 0 0
3)从报告正文中删除[Ref]并将[LastIs99Cnt]聚合为:
=Sum([LastIs99Cnt] ForEach ([Ref]))
同时添加一个简单的Count / Where来获取非99值:
=Count([Ref] Where ([Val] <> "00"))
该块将如下所示:
| [Qtr]
|---------------------------
99 Cnt | =Sum([LastIs99Cnt] ForEach (Ref))
Full Cnt | =Count(Ref] Where (Val] <> "00"))
并产生预期的结果:
Q1 Q2
99 Cnt 3 4
Full Cnt 9 8