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

如何在SSRS汇总表中合并统计ITEM与ITEM2字段的商品数据?

解决方案步骤

1. 修改主统计查询,合并ITEM和ITEM2字段

原来的查询只统计了ITEM字段,现在我们需要用UNION ALL把ITEM和ITEM2的所有值(包括转义后的NULL)合并成一个单列,再分组统计:

-- 主统计脚本
SELECT 
    ItemValue AS ITEM,
    COUNT(*) AS TotalCount
FROM (
    -- 把ITEM和ITEM2拆成单独的行
    SELECT ISNULL(a.ITEM, 'NULL') AS ItemValue
    FROM SALES AS a
    UNION ALL
    SELECT ISNULL(a.ITEM2, 'NULL') AS ItemValue
    FROM SALES AS a
) AS CombinedItems
-- 兼容原有的参数过滤
WHERE ItemValue IN (@ITEM)
GROUP BY ItemValue
ORDER BY ItemValue

2. 更新SSRS参数查询,包含ITEM2的所有值

原来的参数只取了ITEM字段的去重值,现在要把ITEM2的也加进去,这样参数列表里才会出现ITEM2中的选项:

-- SSRS参数查询
SELECT DISTINCT ISNULL(a.ITEM, 'NULL') AS ITEM
FROM SALES AS a
UNION  -- 用UNION自动去重,避免重复选项
SELECT DISTINCT ISNULL(a.ITEM2, 'NULL') AS ITEM
FROM SALES AS a
ORDER BY ITEM
为什么这样有效?

拿你给出的测试数据举例:

ITEMITEM2
TVNULL
TVRADIO
RADIOTV

通过UNION ALL合并后,子查询CombinedItems会生成以下行:

  • TV
  • NULL
  • TV
  • RADIO
  • RADIO
  • TV

如果你的参数选择了TV和RADIO(排除NULL),过滤后剩下的行就是TV, TV, RADIO, RADIO, TV,分组统计后正好得到TV-3、Radio-2的结果,完全符合你的需求。

注意事项
  • 一定要用UNION ALL而不是UNION:UNION会自动去重,会导致统计数量错误;UNION ALL保留所有原始行,才能正确计数。
  • 如果不需要统计NULL值,可以在子查询里加WHERE条件过滤,比如SELECT ISNULL(a.ITEM, 'NULL') AS ItemValue FROM SALES AS a WHERE a.ITEM IS NOT NULL,同理处理ITEM2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:01:51