如何在SQL Server中实现类似Excel透视表的单列垂直分组效果
实现方案
你需要的单列层级展示效果,可以通过UNION ALL拼接区域行和对应门店行,额外增加排序字段控制展示顺序实现,完整查询如下:
;WITH area_data AS ( -- 提取去重的区域作为每个分组的首行 SELECT DISTINCT district AS column1, district AS sort_group, -- 一级排序字段,保证同区域内容聚合 0 AS sort_order -- 区域行排序权重设为0,排在同区域门店前 FROM all_areas UNION ALL -- 拼接所有门店作为分组下的子行 SELECT store AS column1, district AS sort_group, ROW_NUMBER() OVER(PARTITION BY district ORDER BY store) AS sort_order -- 门店按顺序生成排序权重 FROM all_areas ) SELECT column1 FROM area_data ORDER BY sort_group, sort_order
逻辑说明
- 第一层查询先取出所有不重复的区域,作为每个分组的首行
- 第二层查询把所有门店行拼接在区域行之后,同区域的门店按顺序生成排序权重
- 最后统一按区域分组、排序权重排序,就能得到你需要的层级展示效果
执行后输出结果完全匹配需求:
column1 ------- district1 store1 store2 district2 store3 store4 store5 district3 store6
内容的提问来源于stack exchange,提问作者learntofix
相关产品推荐
相关产品推荐

