You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SSRS Expression隐藏存在Active状态的LocationID所有行?

实现方案

核心逻辑是:只保留那些整个LocationID下没有任何Active状态记录的所有行。下面分几种常用工具给出具体实现方法:

1. SQL 实现(适用于数据库数据源)

方法一:子查询筛选符合条件的LocationID

先找出所有不存在Active状态的LocationID,再关联原表获取这些LocationID的所有数据:

SELECT t.*
FROM your_table t
WHERE t.LocationID NOT IN (
    SELECT DISTINCT LocationID
    FROM your_table
    WHERE Status = 'Active'
);

方法二:窗口函数标记(更高效,适合大数据量)

用窗口函数计算每个LocationID下是否存在Active状态,然后筛选出没有Active的组:

WITH location_status AS (
    SELECT 
        *,
        MAX(CASE WHEN Status = 'Active' THEN 1 ELSE 0 END) OVER (PARTITION BY LocationID) AS has_active
    FROM your_table
)
SELECT *
FROM location_status
WHERE has_active = 0;

2. Power BI 实现

方法一:DAX 计算列标记

添加一个计算列,标记当前LocationID是否存在Active状态:

Has Active = 
VAR CurrentLoc = 'Table'[LocationID]
RETURN
CALCULATE(
    COUNTROWS('Table'),
    'Table'[LocationID] = CurrentLoc,
    'Table'[Status] = "Active"
) > 0

然后在报表筛选器中,设置Has Active等于FALSE即可。

方法二:DAX 度量值筛选(适合实时计算)

创建一个度量值,然后在视觉对象的筛选器中使用:

Show Location = 
VAR CurrentLoc = SELECTEDVALUE('Table'[LocationID])
RETURN
IF(
    CALCULATE(COUNTROWS('Table'), 'Table'[LocationID] = CurrentLoc, 'Table'[Status] = "Active") = 0,
    1,
    0
)

将该度量值添加到视觉对象的筛选器,设置为等于1。

3. Excel 实现

方法一:辅助列+筛选

  1. 在空白列(比如E列)输入公式,判断当前LocationID是否存在Active状态:
    =COUNTIFS($A:$A,$A2,$D:$D,"Active")=0
    
    (假设LocationID在A列,Status在D列)
  2. 下拉填充公式后,筛选E列为TRUE的行即可。

方法二:高级筛选

  1. 创建条件区域,用公式条件:
    =COUNTIFS($A:$A,A2,$D:$D,"Active")=0
    
  2. 选择数据区域,使用「数据」选项卡的「高级」筛选,选择条件区域即可。

内容的提问来源于stack exchange,提问作者WillyH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:35:44