Power BI日期对比异常:SUMX计算工资时排除所选日期病假员工
解决方案
要实现排除所选日期处于病假区间的员工后计算工资总和,核心是先筛选出符合条件的员工,再用SUMX计算工资。以下是具体步骤和DAX公式:
1. 确认当前日期度量值
确保你获取切片器所选日期的度量值正确,比如:
CurrentDay = SELECTEDVALUE('日期表'[日期])
2. 编写工资求和的度量值
使用SUMX结合FILTER筛选员工表,排除在所选日期处于病假区间的员工:
有效工资总和 = VAR _CurrentDay = [CurrentDay] RETURN SUMX( FILTER( '员工表', // 判断该员工在所选日期没有处于任何病假区间 COUNTROWS( FILTER( '病假记录表', '病假记录表'[员工ID] = '员工表'[员工ID] && '病假记录表'[病假开始日期] <= _CurrentDay && '病假记录表'[病假结束日期] >= _CurrentDay ) ) = 0 ), '员工表'[工资] )
错误原因说明
你之前的公式遍历的是病假记录表,且直接返回1进行求和,所以结果是病假记录的总行数。正确的做法应该遍历员工表,先筛选出无病假的员工,再对他们的工资字段求和。
简化写法(可选)
也可以用NOT EXISTS来简化筛选逻辑,代码更简洁:
有效工资总和 = VAR _CurrentDay = [CurrentDay] RETURN SUMX( FILTER( '员工表', NOT EXISTS( FILTER( '病假记录表', '病假记录表'[员工ID] = '员工表'[员工ID] && '病假记录表'[病假开始日期] <= _CurrentDay && '病假记录表'[病假结束日期] >= _CurrentDay ) ) ), '员工表'[工资] )
内容的提问来源于stack exchange,提问作者Iw4n
相关产品推荐
相关产品推荐

