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

如何转置SQL表TEST-TABLE并统计各动物对应条目的出现次数?

解决方案:逆透视+分组统计

要实现需求,核心是先把Digested和Played with两列的行数据转换为统一的列条目(逆透视),再按动物和条目分组统计出现次数。

方法1:通用SQL(适配所有支持UNION ALL的数据库)

通过UNION ALL将两列的所有值合并到一个新列(命名为Item),再分组计数:

SELECT
  Animal,
  Item,
  COUNT(*) AS Count
FROM (
  -- 提取Digested列的所有条目
  SELECT Animal, Digested AS Item FROM TEST-TABLE
  UNION ALL
  -- 提取Played with列的所有条目(注意空格列名要用方括号/双引号包裹)
  SELECT Animal, [Played with] AS Item FROM TEST-TABLE
) AS UnpivotedData
-- 可选:过滤空值条目
WHERE Item IS NOT NULL
GROUP BY Animal, Item
ORDER BY Animal, Count DESC;

方法2:使用UNPIVOT函数(适用于SQL Server、Oracle等支持的数据库)

如果你的数据库支持UNPIVOT语法,可更简洁地完成逆透视:

SELECT
  Animal,
  Item,
  COUNT(*) AS Count
FROM TEST-TABLE
UNPIVOT (
  Item FOR Activity IN (Digested, [Played with])
) AS UnpivotedData
WHERE Item IS NOT NULL
GROUP BY Animal, Item
ORDER BY Animal, Count DESC;

注意事项

  • 列名Played with包含空格,SQL中需用方括号[](SQL Server)或双引号""(Oracle、PostgreSQL)包裹,避免语法错误。
  • 若不需要排除空值条目,可去掉WHERE Item IS NOT NULL语句。
  • 最终结果会按动物分组,统计每个条目在Digested和Played with两列中的总出现次数,与目标表结构一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:23:52