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

在SSRS中实现行转列:将分组SQL数据转换为宽表格式

实现思路:将分组统计数据转为宽表格式

一、SQL查询层面直接转换(推荐优先)

无需依赖SSRS,直接在数据源层面输出预期格式,报表可直接展示,两种常用写法:

1. 条件聚合写法

兼容性强,适配已知固定Status值的场景:

SELECT 
    Sector,
    SUM(CASE WHEN Status = 'Expired' THEN Count ELSE 0 END) AS Expired,
    SUM(CASE WHEN Status = 'Valid' THEN Count ELSE 0 END) AS Valid,
    SUM(CASE WHEN Status = 'New' THEN Count ELSE 0 END) AS New,
    SUM(Count) AS Total
FROM 你的原始查询结果表
GROUP BY Sector
ORDER BY Sector

2. PIVOT函数写法

适用于支持PIVOT的SQL Server版本:

SELECT 
    Sector,
    ISNULL(Expired, 0) AS Expired,
    ISNULL(Valid, 0) AS Valid,
    ISNULL(New, 0) AS New,
    (ISNULL(Expired,0) + ISNULL(Valid,0) + ISNULL(New,0)) AS Total
FROM (
    SELECT Sector, Status, Count FROM 你的原始查询结果表
) AS SourceData
PIVOT (
    SUM(Count)
    FOR Status IN ([Expired], [Valid], [New])
) AS PivotTable
ORDER BY Sector

二、SSRS报表层面实现(基于原始数据源)

若需在SSRS内处理原始的Sector+Status多行数据,矩阵控件比表格分组更适配行转列需求:

  • 步骤1:新建矩阵,将Sector拖到「行组」区域
  • 步骤2:将Status拖到「列组」区域,手动固定列组成员为Expired、Valid、New(避免动态列)
  • 步骤3:将Count拖到矩阵数据单元格,设置聚合方式为Sum
  • 步骤4:添加总计列:在矩阵右侧插入列,选择「总计-行」,单元格表达式设为Sum(Fields!Count.Value)
  • 步骤5:调整列标题为固定的Expired、Valid、New,补充Total列标题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:47:06