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

如何在Microsoft SQL Server中为非数值类型的表生成Pivot透视表?

透视表实现方案

一、SQL Server 实现(优先推荐)

SQL Server的PIVOT语法本身支持非数值类型数据透视,只需要搭配MAX()/MIN()这类字符串兼容的聚合函数即可,只要你的分类+指标组合对应唯一的字符串值,就可以正常使用。

首先假设源表结构如下:

  • 表名:business_data
  • 字段1:category 分类列(对应示例中的类别列,如类别1、类别2)
  • 字段2:indicator 指标列(对应示例中的指标名称列,如指标1、指标2)
  • 字段3:indicator_value 指标值列(对应示例中的字符串类型指标内容)

静态透视SQL(指标固定场景)

如果需要转换的指标名称是固定的,可以直接写死PIVOT的列:

SELECT 
  category,
  [指标1], [指标2], [指标3], [指标4] -- 替换为你实际的指标名称
FROM 
(
  SELECT category, indicator, indicator_value
  FROM business_data
) AS source_table
PIVOT
(
  MAX(indicator_value) -- 非数值用MAX/MIN均可,只要组合唯一结果就正确
  FOR indicator IN ([指标1], [指标2], [指标3], [指标4]) -- 和上面的列名保持一致
) AS pivot_table
ORDER BY category

动态透视SQL(指标不固定场景)

如果指标会动态新增,不想每次改SQL,可以用动态SQL生成:

DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX)

-- 提取所有不重复的指标名称,生成透视列字符串
SELECT @cols = STRING_AGG(QUOTENAME(indicator), ', ')
FROM (SELECT DISTINCT indicator FROM business_data) AS indicators

SET @query = 
'SELECT category, ' + @cols + ' 
FROM 
(
  SELECT category, indicator, indicator_value FROM business_data
) AS source
PIVOT 
(
  MAX(indicator_value)
  FOR indicator IN (' + @cols + ')
) AS pivot_table
ORDER BY category'

EXEC sp_executesql @query

二、Django 端实现(SQL方案不可用时使用)

如果需要在Python端处理且不能安装Pandas,可以直接用原生Python对QuerySet结果做分组聚合,代码示例如下:

from django.db.models import F

# 1. 取出所有源数据(BusinessData替换为你实际的Django模型类名)
raw_data = BusinessData.objects.values_list("category", "indicator", "indicator_value")

# 2. 先拿到所有不重复的指标列表
indicators = list(BusinessData.objects.values_list("indicator", flat=True).distinct())

# 3. 按分类分组重组数据
pivot_result = {}
for category, ind, val in raw_data:
    if category not in pivot_result:
        # 初始化分类的所有指标默认值为空
        pivot_result[category] = {ind: "" for ind in indicators}
        pivot_result[category]["category"] = category
    pivot_result[category][ind] = val

# 4. 转成列表格式,即为最终透视表结果
pivot_list = list(pivot_result.values())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:36:04