在 Crystal 中,我试图根据他们是否在指定日期范围内居住在住房中来选择一个人(并进一步将他们纳入计数,但我已经处理了这部分)。
所以基本上鲍勃从 2020 年 1 月 1 日(搬入)到 2021 年 5 月 30 日(搬出)住在一个单元中,我试图找到从 2021 年 1 月 1 日(开始日期)到 2021 年 1 月 1 日(开始日期)住在该设施的所有租户。 2022 年 3 月 1 日(结束日期)。如果租户仍住在那里,他们的搬迁将为 NULL。
我已经尝试过将其作为范围评估、日期范围参数、sql case 语句、各种公式,但它只是无法正确提取数字。以下是我目前的尝试。
公式 if ({View_Tenants.movein} <= {?Start Date} and {@MoveoutNull} >= {?开始日期}) 或者 ({View_Tenants.movein} <= {?End Date} and {@MoveoutNull} >= {?结束日期}) 或者 ({View_Tenants.movein} >= {?开始日期} 和 {@MoveoutNull} <= {?Start Date}) then 1 else 0
选择声明
范围分析 = 1
移出空: if isnull({View_Tenants.moveout}) then currentdate (也尝试过将此作为未来日期的一种方式)。
我们必须弄清楚在我们感兴趣的时间内是否有任何租户在该设施周围闲逛。让我们对此进行分析:
我们基本上是在指定的时间范围内检查任何时候在设施内的任何人。
鉴于这些情况,您的情况将变为:
{View_Tenants.movein} <= {?Start Date} and {@MoveoutNull} >= {?End Date}
{View_Tenants.movein} <= {?Start Date} and {@MoveoutNull} between {?Start Date} and {?End Date}
{View_Tenants.movein} between {?Start Date} and {?End Date}
如果结合场景,公式会是什么样子的示例。
脚本:
if
({View_Tenants.movein} <= {?Start Date} and {@MoveoutNull} >= {?End Date}) or
({View_Tenants.movein} <= {?Start Date} and {@MoveoutNull} between {?Start Date} and {?End Date}) or
({View_Tenants.movein} between {?Start Date} and {?End Date})
then
1
else
0
您的
MoveoutNull
公式已正确设置,可将空的迁出日期替换为当前日期。
最终声明:
RangeAnalysis = 1
请记住,在此过程中,在给定时间范围内居住在该设施的个人被标记为“1”,而未居住在该设施的个人则被标记为“0”。最终计数只是将所有“1”相加。