我有一个包含 43,000 行的总账表 (FCT_GL_Details),其中包含我想要合并到跟踪余额 (FCT_GL_TB) 中的交易,按“yyyy”格式的分行、账户、子账户、finYear、“mm”格式的 finMonth、PeriodID 分组(是“yyyymm”中的 FinYearFinMonth,然后我想对 NettAmt 求和。我创建了一个引用表并按上述分组。我现在需要的是两个期初余额,一个是迄今为止的生命周期 (LTD_Opening) 和一个年份- 迄今为止(YTD_Opening)基于同一财政年度。
Excel 等效项:
LTD_Opening = sumifs([NettAmt],[Periodid],"<"&[@[PeriodID]],[Branch],[@[Branch]],[Account],[@[Account]],[Subaccount],[@[Subaccount]])
and YTD would include ... ",[FinYear],[@[FinYear]])
通过过滤,如何切换在行值前添加“@”前缀的 Excel 约定?
虽然我对您的期初余额考虑有些困惑,但您可以通过下面给出的几个自定义列和措施来实现所需的输出-
首先让我们创建一个日期自定义列,使用 FinYear 和 FinMonth 中的值检查所有月份的日期,如下所示 -
first_date_of_month = DATE(your_table_name[finyear],your_table_name[finmonth],1)
现在再创建下面 2 个自定义列,从中我们可以检查该行属于相应的 Branch 和 FinYear 的 Opening date。
is_initial_opening_of_branch =
var current_row_branch = your_table_name[branch]
var current_row_first_date_of_month = your_table_name[first_date_of_month]
var check_first_balance_of_branch =
CALCULATE(
COUNTROWS(your_table_name),
FILTER(
ALL(your_table_name),
your_table_name[branch] = current_row_branch
&& your_table_name[first_date_of_month] <= current_row_first_date_of_month
)
)
return IF(check_first_balance_of_branch = 1,1,0)
is_initial_opening_of_finyear =
var current_row_branch = your_table_name[branch]
var current_row_finyear = your_table_name[finyear]
var current_row_first_date_of_month = your_table_name[first_date_of_month]
var check_first_balance_of_branch_finyear =
CALCULATE(
COUNTROWS(your_table_name),
FILTER(
ALL(your_table_name),
your_table_name[branch] = current_row_branch
&& your_table_name[finyear] = current_row_finyear
&& your_table_name[first_date_of_month] <= current_row_first_date_of_month
)
)
return IF(check_first_balance_of_branch_finyear = 1,1,0)
现在让我们创建您所需的2个措施,如下所示-
ltd_opening =
var current_row_branch = MIN(your_table_name[branch])
var current_row_first_date_of_month = MIN(your_table_name[first_date_of_month])
return
CALCULATE(
sum(your_table_name[nett]),
FILTER(
ALL(your_table_name),
your_table_name[branch] = current_row_branch
&& your_table_name[first_date_of_month] <= current_row_first_date_of_month
&& your_table_name[is_initial_opening_of_branch] <> 1
)
) + 0
ytd_opening =
var current_row_branch = MIN(your_table_name[branch])
var current_row_finyear = MIN(your_table_name[finyear])
var current_row_first_date_of_month = MIN(your_table_name[first_date_of_month])
return
CALCULATE(
sum(your_table_name[nett]),
FILTER(
ALL(your_table_name),
your_table_name[branch] = current_row_branch
&& your_table_name[finyear] = current_row_finyear
&& your_table_name[first_date_of_month] <= current_row_first_date_of_month
&& your_table_name[is_initial_opening_of_finyear] <> 1
)
) + 0
这是最终输出-